抽象類
/**
* @Author: chuan.bai
* @Description 制作面條抽象類
* @Date: Created on 16:55 2021/4/1
* @Modified By:
*/
public abstract class NoodlesAbstract {
/**
* 制作面條的方法
*/
abstract void process();
}
基礎類
/**
* @Author: chuan.bai
* @Description 制作普通面條
* @Date: Created on 16:58 2021/4/1
* @Modified By:
*/
public class NormalNoodles extends NoodlesAbstract{
@Override
void process() {
System.out.println("制作普通面條");
}
}
裝飾器
/**
* @Author: chuan.bai
* @Description 面條裝飾器
* @Date: Created on 17:01 2021/4/1
* @Modified By:
*/
public abstract class Decorator extends NoodlesAbstract{
private NoodlesAbstract noodlesAbstract;
public Decorator(NoodlesAbstract noodlesAbstract) {
this.noodlesAbstract = noodlesAbstract;
}
@Override
void process() {
noodlesAbstract.process();
}
}
/**
* @Author: chuan.bai
* @Description 加西紅柿的面
* @Date: Created on 17:05 2021/4/1
* @Modified By:
*/
public class EggNoodles extends Decorator {
public EggNoodles(NoodlesAbstract noodlesAbstract) {
super(noodlesAbstract);
}
@Override
public void process() {
super.process();
System.out.println("加雞蛋");
}
}
/**
* @Author: chuan.bai
* @Description 加西紅柿
* @Date: Created on 17:05 2021/4/1
* @Modified By:
*/
public class TomatoNoodles extends Decorator {
public TomatoNoodles(NoodlesAbstract noodlesAbstract) {
super(noodlesAbstract);
}
@Override
public void process() {
super.process();
System.out.println("加西紅柿");
}
}
客戶端
/**
* @Author: chuan.bai
* @Description
* @Date: Created on 17:06 2021/4/1
* @Modified By:
*/
public class Client {
public static void main(String[] args) {
NormalNoodles normalNoodles = new NormalNoodles();
TomatoNoodles tomatoNoodles = new TomatoNoodles(normalNoodles);
tomatoNoodles.process();
EggNoodles eggNoodles = new EggNoodles(tomatoNoodles);
eggNoodles.process();
}
}
輸出結果
制作普通面條
加西紅柿
制作普通面條
加西紅柿
加雞蛋
Process finished with exit code 0