![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 87
terry_sdy
这个作者很懒,什么都没留下…
展开
-
【设计模式】《Head First 设计模式》读书笔记——观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计设计原则:1.为了交互对象之间的松耦合设计而努力2.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起3.针对接口编程,不针对实现编程4.多用组合,少用继承问题简单描述:多个读者订阅同一个报社的报纸,需要实现报社没更新一版报纸原创 2016-11-05 00:51:36 · 555 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。问题简单描述:晚餐店跟煎饼店合并,但是他们的菜单的实现所有集合不同。服务员需要打印菜单的时候如果直接遍历的话就需要知道详细的菜单的实现表示。解决思路:引进迭代器接口,迭代器向外提供统一的遍历方法。晚餐店、煎饼店分别提供相应的实现迭代器接口的迭代器,将迭代器给服务员,服务员就无需知道两个餐厅的菜单内部原创 2017-02-06 22:15:45 · 241 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——模板方法模式
模板方法模式:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类看可以在不改变算法结构的情况下,重新定义算法的某些步骤。涉及设计原则:1.好莱坞原则:别调用我们,我们会调用你2.为交互对象之间的松耦合设计而努力问题简单描述:创建咖啡和茶的步骤很类似,把水煮沸->冲泡->倒进杯子->加配料,其中第一步第三步是同样的方法,冲泡和加配料具体操作不同。有没原创 2016-11-20 16:43:54 · 392 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。问题简单描述:让一个火鸡看起来像是鸭子。解决思路:创建一个实现鸭子接口的类,传入火鸡接口作为属性,实现鸭子接口方法时调用火鸡对应的方法。让其他火鸡继承这个类就可以看起来像鸭子。UML图:实现代码:鸭子接口(target)package adapter;原创 2016-11-19 21:53:05 · 461 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——外观模式
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。涉及设计模式:1.最少知识原则:只和你的密友谈话。2.为交互对象之间的松耦合设计而努力。问题简单描述:有一个简单的家庭影院,有电灯、屏幕、投影仪、DVD,但是需要看电影的时候却需要主人做很多事情,打开电灯、调暗灯光、放下屏幕、打开投影仪、打开DVD、播放DVD,电影结束之原创 2016-11-19 22:22:20 · 507 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——工厂模式
工厂模式:工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。涉及设计原则:1.要依赖抽象,不要依赖具体类2.为交互对象之间的松耦合设计而努力问题简单描述:披萨店有许多不同种类的披萨,而且每个种类披萨在不同地区的加盟店的口味风格原创 2016-11-07 22:06:38 · 536 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——单件模式
单件模式:确保一个类只有一个实例,并提供一个全局访问点。问题简单描述:像线程池、缓存、对话框等的对象我们只需要一个,如果出现多个对象会出现许多问题。如果用全局变量,假如是一个非常耗费资源的对象,但是程序的一次执行中一直没有用到这个对象就形成了浪费。解决思路:提供一个私有构造器、一个静态方法和一个静态变量。私有构造器确保不被其他类构造,通过静态方法来实例化对象,静态变量用来判断类原创 2016-11-09 23:13:48 · 306 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——命令模式
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。涉及设计原则:1.为交互对象之间松耦合设计而努力2.依赖抽象,不要依赖具体类问题简单描述:需要实现一个遥控器,控制不同硬件的功能。因为遥控器以后可能需要新增对其他硬件的控制,如果遥控器知道太多硬件的细节(依赖实体类),每增加一个硬件都需要对遥控器进行修改。解决思原创 2016-11-12 17:45:29 · 250 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——策略模式
写在前面:上个学期刚学了SSH,参加了几个竞赛写了几个小项目,但是也只是简单的套用SSH的套路,也不是很清楚为什么要用略显臃肿的框架,只听学长提起什么松耦合易维护,不是很理解为什么框架就可以做到这些。后来学长推荐了《Head First 设计模式》,暑假的时候粗略看了几章,看的时候就总有豁然开朗的感觉,噢~原来框架是通过这些设计模式来达到“松耦合”、“易维护”。开学之后白天上课,下课了跟着老师原创 2016-11-03 16:00:08 · 415 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——装饰者模式
装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。涉及设计模式:1.多用组合,少用继承2.类应该对扩展开放,对修改关闭问题简单描述:星巴克有很多饮料。一开始的设计是有一个饮料超类(包含getDescription()、cost()方法),所有的饮料都继承这个饮料超类,但是饮料的种类非常的多,使得类的种类非常非常多,简直是“类爆炸”。后来又原创 2016-11-05 22:44:38 · 411 阅读 · 0 评论 -
【设计模式】《Head First 设计模式》读书笔记——状态模式
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好想修改了它的类。问题简单描述:需要实现一个糖果自动售货机。原先的售货机状态转化如下:后需求变动添加了10%概率双倍糖果的赢家状态,状态转化如下:原先的静态状态量表示状态,大段if else代码完成状态转化难以扩展代码需要重构。解决思路:创建状态接口,包含所有引起状态改变的事件处理的方法,将每种状原创 2017-02-08 21:07:49 · 345 阅读 · 0 评论