Decorator Pattern
5526 ワード
オブジェクトをラップし、ラップしたオブジェクトの機能を拡張する
サンプルコードでは、新しく機能を追加する代わりに、Stringオブジェクトをカッコでラップします
以下のクラス構成で確認します
クラス | 説明 |
---|---|
abstract Display.class |
各クラスの共通型とする 抽象メソッドを定義 |
Message.class | Displayを拡張 このクラスのStringフィールドがラップ対象 |
Decorator.class | Displayを拡張 Decoratorを実装する |
user(Main.class) | 動作を確認する |
*user 他の開発者がこのパターンを利用する、という意味合いを含みます
以下はサンプルコードです
abstract_class_Display
abstract class Display{
abstract String getStr();
}
Message.class
class Message extends Display{
String msg;
Message(String s){this.msg=s;}
String getStr() {return msg;}
}
Decorder.class
class Decorator extends Display{
Display display;
StringBuffer sb = new StringBuffer();
Decorator(Display d){this.display=d;}
String getStr(){
return makeBorder(display.getStr());}
String makeBorder(String msg){
sb.append("<")
.append(msg)
.append(">");
return sb.toString();
}
}
user(Main.class)
public static void main(String[] args){
Display d1 = new Message("Hello java");
Display d2 = new Decorator(new Decorator(new Decorator(d1)));
System.out.println(d2.getStr());
}
Author And Source
この問題について(Decorator Pattern), 我々は、より多くの情報をここで見つけました https://qiita.com/old_cat/items/c7ede455af9bfa047448著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .