OO设计模式—装饰者模式
设计原则tip:类应该对拓展开放,对修改关闭。(在不修改现有代码的情况下,就可搭配新的行为)
装饰者模式:动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性的替代方案。
以下是《模式设计》书中的星巴克咖啡例子:
public abstract class Beverage
{
String description = "Unknown Beverage";
public String getDescription(){
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator extends Beverage //咖啡的调料,所有调料装饰者必须覆写getDescription方法
{
public abstract String getDescription();
}
//一些基本饮品,作为基本组件
public class Espresso extends Beverage
{
public Espresso(){
description = "Espresso";
}
public double cost(){
return 1.99;
}
}
public class HouseBlend extends Beverage
{
public HouseBlend(){
description = "HouseBlend";
}
public double cost(){
return .98;
}
}
//以下为调料,作为装饰者
public class Mocha extends CondimentDecorator
{
Beverage beverage;
public Mocha(Beverage beverage){
this.berverage = berverage;
}
public String getdDescription(){
return berverage.getDescription();
}
public double cost(){
return .20 + berverage.cost();
}
}
//测试代码
public class StarbuzzCoffee
{
public static void main(String[] args){
Berverage beverage = new Espresso();
System.out.println(berverage.getDescription()+ "$" +berverage.cost());
Berverage beverage2 = new HouseBlend();
beverage2 = new Mocha(beverage2);
beverage2 = new Mocha(beverage2);
beverage2 = new Whip(beverage2); //添加调料
System.out.println(berverage.getDescription()+"$"+berverage.cost());
}
}
分享到:
相关推荐
设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 设计模式12-解释器模式 设计模式13-迭代器模式 设计模式14-中介者模式...
1 设计模式入门 欢迎来到设计模式世界 2 观察者模式 让你的对象知悉现况 3 装饰者模式 装饰对象 4 工厂模式 烘烤OO的精华 5 单件模式 独一无二的对象 6 命令模式 封装调用 7 适配器模式与外观模式 随遇模式 8 模板...
1.5 OO设计七原则 7 1.5.1 开-闭原则(OPEN-CLOSED PRINCIPLE, OCP): 7 1.5.2 里氏代换原则(LISKOV SUBSTITUTION PRINCIPLE,常缩写为.LSP) 8 1.5.3 依赖倒置原则(DEPENDENCE INVERSION PRINCIPLE) 8 1.5.4 接口隔离...
1 设计模式入门 欢迎来到设计模式世界 2 观察者模式 让你的对象知悉现况 3 装饰者模式 装饰对象 4 工厂模式 烘烤OO的精华 5 单件模式 独一无二的对象 6 命令模式 封装调用 7 适配器模式与外观模式 随遇模式 8 模板...
1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 ...
经典OO设计模式PPT 经典设计模式PPT 相信你需要的
千万不要轻视这些OO原则,因为每个设计模式背后都包含了几个OO原则的概念。很多时候,在设计时有两难的情况,这时候我们必须回归到OO原则,以方便判断取舍。可以这么说:OO原则是我们的目标,而设计模式是我们的做法...
3装饰者模式装饰对象 4工厂模式烘烤OO的精华 5单件模式独一无二的对象 6命令模式封装调用 7适配器模式与外观模式随遇模式 8模板方法模式封装算法 9选代器与组合模式管理良好的集合 10...
在 OO 设计和开发过程,可能会经常遇到以下的情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会给定义一个新类继承自定义好的类,这样会带来一个问题(将在本模式的讨论中给出)。...
3,装饰者模式:动态地将责任附加到对象上。若要扩展功能。装饰着提供 了比继承更有弹性的替代方案。 4,工厂方法模式:定义一个创建对象的接口,但由子类觉得要实例化的类是哪一个。工厂方法让类把实例化推迟到子类...
1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 ...
1 欢迎来到设计模式世界:设计模式入门 模拟鸭子应用 Joe想到继承 利用接口如何? 软件开发的不变真理 分开变化和不变部分 设计鸭子的行为 测试鸭子的代码 动态地设置行为 封装行为的大局观 ...
装饰工 装饰者模式 OO基础: 多态,封装,继承,抽象 OO原则: 封装变化 多用组合,少用继承 针对接口编程而非针对抽象编程 为交互对象之间的松替换设计而努力 对扩张开放,对修改关闭
2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...
Python的装饰器的英文名叫Decorator,当你看到这...但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条(Decorator Pattern)里的UML图和那些代码,这就是我在《 从面向对象的设计模式看软件设计》
新手编程导论 ———— A Programming Introduction For Beginners ... 设计才是真正的编程! 对类型的设计才是设计!...附录:一些领域逻辑,通用OO设计策略,框架设计 305 附录:参考文献 305 附录:一些建议 305