菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
来源:互联网 发布:如何优化搜索引擎 编辑:程序博客网 时间:2024/05/16 10:35
package DecoratorMethod;
/*优点:
可以实现不同要素类之间的排列组合
缺点:
要素类可以随机组合,容易获取违反业务逻辑的组合
扩展:
继承可以对某个方法进行功能增强,装饰设计模式也可以对某个方法进行功能增强,另外:
二者可以结合使用*/
/*需求:
黑咖啡
加奶的黑咖啡
加糖的黑咖啡
加冰的黑咖啡
加奶加糖的黑咖啡
加奶加冰的黑咖啡
加冰加糖的黑咖啡
加奶加糖加冰的黑咖啡
功能: 煮 喝根据上述事务,设计一个类体系结构*/
public class Demo2 {
public static void main(String[] args) {
// 1.现在来实现一个功能,比如加糖加冰的黑咖啡
Coffee c = new BlackCoffee();
Coffee sc = new SugerCoffee(c);
Coffee ic = new IceCoffee(sc);
ic.zhu();
ic.drink();
// 2.现在要继续实现扩充功能,比如说加糖加倍
System.out.println(“—————————-“);
Coffee c1 = new BlackCoffee();
Coffee dsc = new DoubleSugerCoffee(c1);
Coffee ic1 = new IceCoffee(dsc);
ic1.zhu();
ic1.drink();
}
}
// 抽取出一个接口,具有煮和喝的两个功能
interface Coffee {
void zhu();
void drink();
}
// 定义一个黑咖啡类,实现了Coffee,上述功能都需要最终搞这个黑咖啡
class BlackCoffee implements Coffee {
@Overridepublic void zhu() { System.out.println("煮咖啡");}@Overridepublic void drink() { System.out.println("喝黑咖啡");}
}
// 以下的类均实现了Coffee类,都是添加了不同要素类
class SugerCoffee implements Coffee {
private Coffee coffee;
public SugerCoffee(Coffee coffee) { this.coffee = coffee;}@Overridepublic void zhu() { coffee.zhu();}@Overridepublic void drink() { System.out.println("加糖"); coffee.drink();}
}
class MilkCoffee implements Coffee {
private Coffee coffee;
public MilkCoffee(Coffee coffee) { this.coffee = coffee;}@Overridepublic void zhu() { coffee.zhu();}@Overridepublic void drink() { System.out.println("加奶"); coffee.drink();}
}
class IceCoffee implements Coffee {
private Coffee coffee;
public IceCoffee(Coffee coffee) { this.coffee = coffee;}@Overridepublic void zhu() { coffee.zhu();}@Overridepublic void drink() { System.out.println("加冰"); coffee.drink();}
}
// 下边是通过继承的方式来实现对加糖方法的扩充
class DoubleSugerCoffee extends SugerCoffee {
public DoubleSugerCoffee(Coffee coffee) { super(coffee);}@Overridepublic void drink() { System.out.println("两包!"); super.drink();}
}
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- 设计模式(二)装饰者模式
- 初学设计模式(5)-----装饰模式
- 【初学设计模式】Decorator (装饰)
- C++设计模式学习笔记二:装饰者模式
- 设计模式之二:装饰者模式
- 设计模式之二装饰者模式
- 设计模式(二):装饰器模式
- 【菜鸟学设计】——装饰者模式(Decorator)
- 菜鸟学设计模式----装饰器模式
- 【js设计模式笔记---装饰者模式】
- 设计模式笔记-装饰者模式
- 【js设计模式笔记---装饰者模式】
- 设计模式笔记-装饰者模式
- 设计模式-装饰者模式学习笔记
- 设计模式之装饰者模式-笔记
- 初学设计模式二(策略模式)
- DataGridView绑定数据源后,在界面上删除行,数据源没有改变
- “AF_IPX”: 宏重定义的解决方法
- spring-boot学习笔记1
- Java学习 Number类 Charracter类
- 写个单例模式吧@liuyanm
- 菜鸟柳--23种设计模式初学记录笔记(二)装饰者设计模式
- 1分钟教你使用补丁破解IntelliJ IDEA 2017收费版(永久)
- NBUT
- java序列化
- mysql 安全模式
- Spring+Tomcat配置文件与项目分离
- C++创建类对象的三种方式区别
- 浅谈MVC和MVP
- 微信小程序模板消息无限制群发