版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计模式 学习笔记 总结源自设计模式 可复用面向对象软件的基础、Head First 设计模式。1 OO基础抽象封装多态继承2 OO原则1. 封装变化。找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2. 多用组合,少用继承。3. 针对接口编程,不针对实现编程。4. 为交互对象之间的松耦合设计而努力。5. 开放关闭原则。类应该对扩展开放,对修改关闭。6. 依赖倒置原则。依赖抽象,不要依赖具体类。7. 最少知识原则。减少对象之间的交互,只留下几个“密友”,只和密友交谈。8. 好莱坞原则。高层组件对待低层组件的方式是“别调用我们,我们会调用你。”低层组件可以参与计算
2、,但不可以直接调用高层组件;但是高层组件控制何时以及如何让低层组件参与。9. 单一责任原则。类应该只有一个引起变化的原因。3 OO设计模式3.1 设计模式分类创建型: 创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要的实例化的对象中解耦。结构型:结构型模式可以让你把类或者对象组合到更大的结构中。行为型:行为型模式涉及到类和对象如何交互及分配职责。创建型结构型行为型Abstract Factory BuilderFactory MethodPrototypeSingletonAdapterBridgeCompositeDecoratorFacadeFlyweightProxy
3、Chain of ResponsibiltyCommand Interpreter IteratorMediatorMementoObserverStateStrategyTemplate MethodVisitor3.2 创建型3.2.1 Abstract Factory(抽象工厂)*1. 意图提供一系列相关或相互依赖对象的接口,而无需指定它们具体的类。(GOF)提供一个接口,用于创建相关或依赖对象的家族,而无需明确指定具体类。(Head First)2. 结构3.2.2 Builder(生成器)1. 意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(GOF)封
4、装一个产品的构造过程,并允许按步骤构造。将一个复杂对象的创建过程封装起来。(Head First)2. 结构3.2.3 Factory Method(工厂方法)*1. 意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。2. 结构3.2.4 Prototype(原型)1. 意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。2. 结构3.2.5 Singleton(单件)*1. 意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 结构3.3 结构
5、型3.3.1 Adapter(适配器)*1. 意图将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容不能一起工作的那些类可以一起工作。2. 结构类适配器对象适配器3.3.2 Bridge(桥接)1. 意图将抽象部分与它的实现部分分离,使它们都可以独立的变化。2. 结构3.3.3 Composite(组合)*1. 意图将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。2. 结构典型的Composite对象结构如图:3.3.4 Decorator(装饰)*1. 意图动态的给一个对象添加一些额外的
6、职责。就增加功能来说,Decorator模式相比生成子类更为灵活。(GOF)动态的将责任附加到对象上。若要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。(Head First)2. 结构3.3.5 Facade(外观)*1. 意图为子系统的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。(GOF)提供一个统一的接口,用来方位子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。(Head First)2. 结构3.3.6 Flyweight(享元/蝇量)1. 意图运用共享技术有效的支持大量细粒度的对象。(GOF)如果
7、想让某个类的一个实例能用来提供许多“虚拟实例”,就使用蝇量模式。(Head First)2. 结构下面的对象图说明了如何共享flyweight。3.3.7 Proxy(代理)*1. 意图为其他对象提供一种代理以控制对这个对象的访问。(GOF)为另一个对象提供一个替身或占位符以控制对这个对象的访问。(Head First)2. 结构3.4 行为型3.4.1 Chain of Responsibilty(责任链)1. 意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2. 结构一个典型的对象结构如下图
8、所示:3.4.2 Command(命令)*1. 意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。(GOF)一个命令对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这一点,命令对象将动作和接收者包进对象中。(Head First进一步解释)2. 结构3.4.3 Interpreter(解释器)1. 意图给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。(GOF)2. 结构3.4.4 Iterator(迭代器)*1. 意图提供一个方法,顺序访问一个聚合对象中的各个元素,而又不
9、需暴露该对象 的内部表示。2. 结构3.4.5 Mediator(中介者)1. 意图用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。2. 结构3.4.6 Memento(备忘录)1. 意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。2. 结构3.4.7 Observer(观察者)*1. 意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2. 结构3.4.8 State(状态)*1. 意图允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。2. 结构3.4.9 Strategy(策略)*1. 意图定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于是用它的客户而变化。2. 结构3.4.10 Template Method(模板方法)*1. 意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2. 结构3.4.11 Visi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年亲子园所特许经营协议
- 二零二五版环保管家技术服务合同样本:企业环保审计服务3篇
- 2025年度临床试验知识产权合同主体权益保护措施4篇
- 二零二五年度退休人员劳动解除合同及退休金领取及后续保障合同
- 2025年度临时工岗位临时性加班合同
- 2025年度电影演员演出合同书:科幻灾难片主演合约
- 2025年度门窗安装与智能化系统集成合同4篇
- 2025年度城市综合体门头租赁管理服务协议
- 二零二五年度C型钢智能化生产系统建设合同3篇
- 二零二五年度锂电池回收利用项目投资合作协议
- 二年级数学上册100道口算题大全 (每日一套共26套)
- 物流无人机垂直起降场选址与建设规范
- 肺炎临床路径
- 外科手术铺巾顺序
- 创新者的窘境读书课件
- 如何克服高中生的社交恐惧症
- 聚焦任务的学习设计作业改革新视角
- 移动商务内容运营(吴洪贵)任务三 APP的品牌建立与价值提供
- 电子竞技范文10篇
- 食堂服务质量控制方案与保障措施
- VI设计辅助图形设计(2022版)
评论
0/150
提交评论