![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 52
真滋养
这个作者很懒,什么都没留下…
展开
-
《Head First设计模式》读书笔记 -- 装饰者模式
装饰者模式装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的解决方案。书中用星巴克来举例子,星巴克的扩张速度非常快,所以需要不断更新饮品种类。最初的设计是店内所有饮品(根据调料的不同会衍生出不同的饮品,例如摩卡咖啡、香草咖啡、双倍摩卡咖啡)都继承自Beverage类,实现description(饮品描述)和cost(价格)方法,结果如下:缺点:1、类爆炸(类的数量过多)。2、维护不便(某种调料价格变动时需要修改大量类的代码,新增调料后类数量翻倍)。到这里书中提.原创 2021-02-21 15:07:20 · 159 阅读 · 0 评论 -
《Head First设计模式》读书笔记 -- 观察者模式
观察者模式观察者模式定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。书中用气象站应用来举例子:一种可能的实现:调用三个显示器对象的update方法,传入所需的数据。缺点:1、针对具体实现编程而非针对接口编程。2、运行时无法增加删除显示器对象。3、每有一个新的显示器就得修改measurementsChanged方法的代码。4、没有封装改变的部分。到这里书中提出一个设计原则:为了交互对象之间的松耦合设计而努力。观察者模式提供了一种对象设.原创 2021-02-21 13:53:49 · 110 阅读 · 0 评论 -
《Head First设计模式》读书笔记 -- 策略模式
策略模式策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。书中用鸭子类的例子来说明用继承实现类的行为(飞,叫)会导致许多缺点:在一开始,让所有鸭子继承自Duck类,父类实现fly方法。有的鸭子不能飞(橡皮鸭子),这时候子类用空方法把fly给覆盖掉,但是这样每当有新鸭子类出现时就需要检查是否需要覆盖方法。利用接口呢?能飞的鸭子实现flyable接口,能叫的鸭子实现quackable接口。但是这样一来会出现大量重复的代码,当修改行为时需要修改所有采用原创 2021-02-19 22:12:26 · 66 阅读 · 0 评论