设计模式
文章平均质量分 82
学bu会喵de猫
已经离开了软件开发的道理,但还在信息产业界摸爬滚打。
展开
-
HeadFirst 设计模式学习笔记1--策略模式
1.书中举了一个鸭子类的设计,有些会飞或者会叫,有些不会飞可能也不会叫,用继承则导致不该有的功能通过继承而继承了下来,使用接口则代码无法做到最大程度的重用。进而引出设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起,把会变化的部分取出并封装起来,好让其他部分不会受到影响 。——每个设计模式背后的精神所在。2.我们希望运行时动态的改变一些行为,这就引出原创 2011-11-08 23:18:18 · 451 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记8--代理模式
1.这一节的任务是我们需要完成对上一节的糖果机产生一个机器状况和余量的报告,若这个报告在本地(不是通过Internet)生成的话,那么我们的设计就很简单了,在糖果机中加入Location的信息,并且创建一个类GumballMonitor 完成报告的生成:public class GumballMonitor { GumballMachine machine; pub原创 2011-11-08 23:24:23 · 890 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记6--适配器模式和外观模式
1.适配器的作用:将一个接口转换为另一个接口。我们可以比喻为一个插座的转换头。 2.构造适配器的关键:实现了目标接口,并持有被适配者的实例。 而适配器使用的方法是:客户通过目标接口调用适配器的方法对适配器发出请求,适配器使用被适配者接口把请求转换为被支配者的一个或多个调用接口。我们举一个火鸡冒充鸭子的适配器例子:我们定义两个东西:一个是鸭子:public i原创 2011-11-08 23:22:28 · 529 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记3--装饰模式
1.这个模式可以称为“给爱用继承的人一个全新的设计眼界”的模式。牵扯到第五个设计原则:“类应该对扩展开放,而对修改封闭”。但是要注意,遵循这一标准会带来更多层次上的抽象,增加代码的复杂度,所以并不是所有类都要这样设计。2.文中举了一个为辛巴克咖啡馆写一个计算咖啡价格+调料价格的类,使用了装饰模式——动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。我们就拿这个原创 2011-11-08 23:20:20 · 588 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记2--观察者模式
1.我们需要理解报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸。然后,出版者+订阅者就是观察者模式,只不过名称不一样,主题(Subject,或者叫做Observabler)类比于出版者,是事件发生的主体,订阅者改称为观察者(Observer),是响应事情发生的主体。该模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状原创 2011-11-08 23:19:16 · 856 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记10——MVC分析
1.M-V-C ——Model--View--Controller,模式-视图-控制器,这是一种范型。模型对象正是应用系统存在的理由,你设计的对象,包含了数据、逻辑和其他在你的应用领域创建定制的类。视图通常是控件,用来显示和编辑,控制器位于二者中间,负责将每个改变的状态送进送出。而学习设计模式是理解MVC的钥匙。书中用一个iTunes的例子直观描述了MVC:2.MVC的基本原理:原创 2011-11-08 23:26:12 · 1002 阅读 · 1 评论 -
HeadFirst 设计模式学习笔记7--迭代器模式
1.本节的一个话题引子是一个餐厅,它提供早餐和午餐,但是在订制菜单的时候,早餐(Pancake)和午餐(Dinner)的实现却造成了一些麻烦。订制早餐的菜单是用ArrayList这样一个数据池来维护的。但是订制午餐的菜单则是一个标准数组进行维护。那么在设计订餐程序来遍历这两个不同的数据结构形成的菜单的时候,就会比较麻烦,毕竟返回的数据类型不是一样的。(不知道我说清楚了没,参阅英文版原书P321)原创 2011-11-08 23:23:34 · 593 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记5--单例模式
1.单例模式确保一个实例被创建,并且任意时刻都只有一个对象。它给了我们一个全局的访问点,又屏蔽了全局变量的缺点。可以被用来管理共享资源,比如数据库连接或线程池。特征是构造函数为私有,然后声明一个私有静态成员作为类对象,对外提供一个静态类方法创建该对象,在创建对象时会先判断是否已经创建,若是则直接返回已经创建的对象,若没有则创建新对象。2.经典的单例模式如下:public class原创 2011-11-08 23:21:38 · 365 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记4--工厂模式
1.我们在前边提到一个原则就是“面向接口而不要面向实现编程”,但是我们一直在使用Duck duck = new MallardDuck()这样的模式,后边的new语句却违反了这个原则。工厂方法就可以解决这个问题,它用来封装对象的创建。2.这一节我们考虑如下场景:一个披萨店要制作各种各样的披萨,甚至还要开分店。其中涉及到订购披萨的步骤。我们可以把orderPizza中的关于制作pizza的部原创 2011-11-08 23:21:04 · 698 阅读 · 0 评论 -
HeadFirst 设计模式学习笔记9--责任链模式
Head First里面没有详细说这个设计模式,可能是觉得这个设计模式和观察者模式有很大的相似度,事实也正是如此。正如观察者模式一样,也有一个subject表示一个事件的发生,而向后传递的不再是一个或多个并行的观察者,而是一个或多个串行Object(可以理解为处理者,只是名字不同而已)。我们下边举个实例,在这个例子中,有一个获取帮助的事件发生,根据帮助的种类不同,我们有三层对这个事原创 2011-11-08 23:25:15 · 564 阅读 · 0 评论