大话设计模式:面向对象程序设计23种常见设计模式通俗演义
第一章 大学毕业了怎么办?——设计模式概述
2017-02-14 08:52:30
在运用面向对象的思维方法进行软件设计的过程中,最容易犯的错误就是开始分析的时候,就想到了程序代码实现的细节,因此封装的类完全是基于程序实现逻辑,而不是基于解决问题的业务逻辑。”
2017-02-14 08:53:45
错嘛
注
这里图中的那些东西都是啥意思
2017-02-14 08:56:49
类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封闭在一起的集合体。类是对一组事物的抽象,是对事物的特性和功能的描述。类是一种模板,并不代表具体的事物。对象是类的实例,即类的变量。方法是指实现对象所具有的功能操作的代码。每个对象中一般包括若干种方法,每个方法有方法名和对应的一组代码。方法体现了对象的一种行为能力。
第二章 学校招聘会——接口型模式介绍
2017-02-14 09:06:56
abstract class表示的是‘is-a’关系,interface表示的是‘like-a’关系
第三章 我们班来了位新同学——适配器模式
2017-02-15 08:48:10
就是把一个类的借口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作。
2017-02-15 08:48:20
从功能上讲这些接口不兼容的类一般具有相同或相似的功能。通常我们通过修改该类的接口来解决这种接口不兼容的情形,但是如果我们不愿意为了一个应用而修改各原有的接口,或者我们压根就没有原有对象的源代码那该怎么办呢?此时Adapter模式就会派上大用场了
2017-02-15 08:48:43
适配器模式所涉及的角色包括:目标、客户、被适配者、适配器
2017-02-15 08:49:24
目标(CTarget):定义一个客户端使用的特定接口。客户(CClient):使用目标接口,与和目标接口一致的对象合作。被适配者(CAdaptee):一个现存需要匹配的接口。适配器(CAdapter):负责将CAdaptee的接口转换成CTarget的接口。适配器是一个具体的类,这是本模式的核心。由此可见,但客户端调用Adapter接口时候,Adapter便会调用
2017-02-15 08:53:47
在软件开发后期或维护的时候再考虑使用适配器
2017-02-15 08:54:14
做好前期就设计,接口不相同的时候,第一时间不应该考虑用适配器,而是考虑通过重构统一接口
2017-02-15 08:54:38
也就是说要在双方都不太容易修改的时候,这个时候再使用适配器模式适配?不
2017-02-15 08:55:04
类适配器和对象适配器。
第四章 金融危机股票还挣钱?——外观模式
2017-02-23 08:46:49
外观模式定义了一个将子系统的一组接口集成在一起的高层接口,以提供一个一致的界面。通过这个界面,其他系统可以方便地调用子系统中的功能,而忽略子系统内部发生的变化
2017-02-23 08:47:14
、为一个比较复杂的子系统提供一个简单的接口。2、将客户程序与子系统的实现部分分离,提高子系统的独立性和可移植性。3、简化子系统间的依赖关系。”
2017-02-23 08:48:48
外观是一个能为子系统和客户提供简单接口的类。当正确的应用外观,客户不再直接和子系统中的类交互,而是与外观交互。外观承担与子系统中类交互的责任。实际上,外观是子系统与客户的接口,这样外观模式降低了子系统和客户的耦合度(如图4-2所示)。”
2017-02-23 08:50:44
应用外观模式要注意以下事项:1、在设计外观时,不需要增加额外的功能。2、不要从外观方法中返回子系统中
的组件给客户
2017-02-23 08:50:59
高层次的接口。因此,外观方法最适合提供特定的高层次的业务服务,而不是进行底层次的单独的业务执行
第五章 生日礼物——组合模式
2017-02-23 08:55:58
A:“组合模式比较简单
注
流量
第六章 蜡笔与毛笔——桥接模式
2017-02-23 09:01:23
,蜡笔和毛笔的关键一个区别就在于笔和颜色是否能够分离
2017-02-23 09:01:18
桥梁模式的用意是‘将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化’。关键就在于能否脱耦
2017-02-23 09:02:17
桥梁模式,它主要用意是为了实现抽象部分与实现部分脱耦,使它们各自可以独立地变化
2017-02-23 09:02:58
桥接模式和适配器模式
2017-02-23 09:03:40
共同点:桥接和适配器都是让两个东西配合工作不同点:出发点不同。适配器:改变已有的两个接口,让他们相容。桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。
2017-02-23 09:05:36
在以下的情况下应当使用桥梁模式:1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。2、设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。3、一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。虽然在系统中使用继承是没有问题的,但
是由于抽象化角色和具体化角色需要独立变化,设计要求需要独立管理这两者。桥梁模式是一个非常有用的模式,也非常复杂,它很好的符合了开放-封闭原则和优先使用对象,而不是继承这两个面向对象原则。”
第七章 击鼓传花——责任型模式
2017-02-23 09:07:16
在责任链模式里,很多的对象由每一个对象对其下家的引用而联接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
第二十章 订单处理——模板方法模式
2017-02-24 09:08:39
“模板方法模式把我们不知道具体实现的步聚封装成抽象方法,提供一些按正确顺序调用它们的具体方法(这些具体方法统称为模板方法),这样构成一个抽象基类。子类通过继承这个抽象基类去实现各个步聚的抽象方法,而工作流程却由
父类来控制。”
第二十五章 多功能的手机——扩展型模式
2017-02-23 16:50:21
扩展模式是指向模式添加元素,通常是对象类和属性。缺省的模式中带有可用于各个目录条目的大量对象类和属性。扩展模式之前,请先查看缺省模式中是否有可以使用而不需扩展模式的现有元素。
第二十六章 三明治——装饰器模式
2017-02-24 08:53:25
我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,
2017-02-24 08:53:38
。使用Decorator的理由是:这些功能
需要由用户动态决定加入的方式和时机。Decorator提供了‘即插即用’的方法,在运行期间决定何时增加何种功能。”
第二十九章 大学生毕业3条出路:学、仕、商——设计模式总结
2017-02-23 09:11:26
当我们向设计模式顶礼膜拜的时候,我们还必须清
醒地看到软件生产中非技术层面上的东西往往具有决定性作用。理想固然崇高,但现实总是残酷的。
多看笔记 来自多看阅读 for iOS
duokanbookid:a85dbbceeb63421ab4d7a0608e66401d