//super class(出力系クラス群の共通クラス) public abstract class Write { protected String data; public abstract void write(); public Write(){ } public Write(String data) { this.data = data; } } //basic write class(基本出力系クラス) public class ConsoleWrite extends Write{ public void write() { System.out.println(super.data); } ConsoleWrite(){ } ConsoleWrite(String data){ super(data); } } //filter write class(機能拡張出力系クラス) public class BufferedWrite extends Write{ private ConsoleWrite cw; public void write() { for(int i=0; i<10; i++){ cw.write(); } } BufferedWrite(){ } BufferedWrite(ConsoleWrite cw){ super(); this.cw = cw; } } //--------------------------------------------------------------- public class Test{ public static void main(String[] args) { ConsoleWrite cw = new ConsoleWrite("出力データ内容"); cw.write(); System.out.println("---------------------------"); BufferedWrite bfw = new BufferedWrite(cw); bfw.write(); } }//end