![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Head First
文章平均质量分 87
iamxiapengfei
这个作者很懒,什么都没留下…
展开
-
《Head First》第一节 策略模式
背景介绍:一个关于鸭子的游戏:有各种鸭子,一边游泳戏水,一边呱呱叫。此系统内部设计了一个鸭子超类,并让所有的鸭子继承此超类。关系图:需求:让部分鸭子可以飞(如,橡皮鸭,诱饵鸭等)。原设计方法:在超类上增加fly(),在子类不可以飞的鸭子(如,橡皮鸭)中,覆盖fly()方法,方法里什么都不做。问题:其他不会飞的鸭子都要重写一个空的fly()方法,修改代码重复,且过多。解决方法:分开变化和不变化的部分...原创 2018-06-04 17:42:50 · 118 阅读 · 0 评论 -
《Head First》第二节 观察者模式
背景介绍:需要建设一个气象站,目前有一个WeatherData对象,会负责追踪目前天气状况(温度,湿度,气压)。现要求建立一个应用,有三种布告板,分别显示目前的状况,气象统计及简单的预报。当WeatherData对象获取最新测量数据时,三种布告板必须实时更新。而且可扩展布告板。WeatherData源文件:第一想法的错误示范:这样会导致不能很好拓展:解决方案:使用观察者模式:出版者+订阅者=观察者...原创 2018-06-04 19:09:17 · 115 阅读 · 0 评论 -
《Head First》第三节 装饰者模式
背景介绍:星巴兹是一家很火爆的咖啡连锁店,因为扩张很快,需求多样化,原系统已不能满足。原系统设计:购买咖啡时,会要求加各种调料,系统要根据加的不同调料收取不同的费用,导致结构图如下:解决方案:以饮料为主体,然后运行时,以调料来“装饰”(decorate)饮料。比如,顾客要加摩卡和奶泡的深焙咖啡。那么要做的是:1.拿一个深焙咖啡(DarkRoast)对象2.以摩卡(Mocha)对象装饰它3.以奶泡(...原创 2018-06-04 19:36:49 · 221 阅读 · 0 评论