装飾図案
1535 ワード
いわゆる装飾図案
オブジェクトをマージすることで、機能のモードを動的に柔軟に拡張できます.
基本機能に追加できる機能の種類が多い場合は、各付加機能をDecoratorクラスとして定義し、必要なDecoratorオブジェクトを組み合わせることで付加機能の組み合わせを設計することができます.
使用例
成分はコーヒー、成分はケニアアメリカンコーヒー、エチオピアなどの対象(成分)と牛乳、シロップ、クリーム(アクセサリー対象)の組み合わせです.
public abstract class Coffee {
public abstract void brewing();
}
public abstract class Decorator extends Coffee {
Coffee coffee;
public Decorator(Coffee coffee) {
this.coffee = coffee;
}
@Override
public void brewing() {
coffee.brewing();
}
}
public class KenyaAmericano extends Coffee {
@Override
public void brewing() {
System.out.print("KenyaAmericano ");
}
}
public class EtiopiaAmericano extends Coffee {
@Override
public void brewing() {
System.out.print("EtiopiaAmericano ");
}
}
public class Latte extends Decorator {
public Latte(Coffee coffee) {
super(coffee);
}
public void brewing() {
super.brewing();
System.out.print("Adding Milk ");
}
}
public class Mocha extends Decorator {
public Mocha(Coffee coffee) {
super(coffee);
}
@Override
public void brewing() {
super.brewing();
System.out.print("Adding Mocha Syrup ");
}
}
*リファレンス-クイックキャンパスオンラインレッスン
Reference
この問題について(装飾図案), 我々は、より多くの情報をここで見つけました
https://velog.io/@gkskaks1004/데코레이터-패턴
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
public abstract class Coffee {
public abstract void brewing();
}
public abstract class Decorator extends Coffee {
Coffee coffee;
public Decorator(Coffee coffee) {
this.coffee = coffee;
}
@Override
public void brewing() {
coffee.brewing();
}
}
public class KenyaAmericano extends Coffee {
@Override
public void brewing() {
System.out.print("KenyaAmericano ");
}
}
public class EtiopiaAmericano extends Coffee {
@Override
public void brewing() {
System.out.print("EtiopiaAmericano ");
}
}
public class Latte extends Decorator {
public Latte(Coffee coffee) {
super(coffee);
}
public void brewing() {
super.brewing();
System.out.print("Adding Milk ");
}
}
public class Mocha extends Decorator {
public Mocha(Coffee coffee) {
super(coffee);
}
@Override
public void brewing() {
super.brewing();
System.out.print("Adding Mocha Syrup ");
}
}
Reference
この問題について(装飾図案), 我々は、より多くの情報をここで見つけました https://velog.io/@gkskaks1004/데코레이터-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol