在继承与组合的选择上,当用继承时,应保证基类或接口尽量的稳定,要不然接口一变化则所有的子类都被迫需要进行一定的改变。而用组合则可以避免这一问题,将变化封装起来变成脱离类继承体系的外部行为,某个子类需要拥有该行为时只要让其拥有该行为的一个实例,而对别的子类没有影响,同时需要面向接口编程,这样当需要的该行为发生变化时,只要变换注入的行为实体类就可以达到目的(策略模式)。(head first 设计模式 鸭子需要添加飞行行为和叫的行为)
为了交互对象之间的松耦合设计而努力,观察者模式则将主题对象和观察者解耦了。同时,在主题对象触发观察者的注册方法时,可以有推和拉两种传递状态数据的方式,推则是把需要提供的对象当成参数传出去,而拉则是把自身的引用穿出去,这个根据具体需要来选择。在一般的listener之类的场景则利用了观察者模式。
设计的开闭原则。除了继承,装饰者模式也可以达到扩展行为的目的,装饰者和被装饰的对象拥有同样的接口是为了获得类型上的一致。在装饰的方法中可以进行任意的变动,甚至把原来的方法给替换掉。
依赖倒置原则,和面向接口编程相比,这里更强调的是高层依赖底层的抽象而不是底层的具体实现,比如在工厂方法模式里通过继承将产品的创建和产品的使用分离开来,达到解耦的目的,而对产品的创建延迟到具体的子类去实现。在抽象工厂模式里,则是通过组合来进行解耦
的,产品的使用类,也就是高层,持有一个抽象工厂的引用便可以进行业务代码的编写,在运行时再根据具体的需要传入对应的具体工厂实现。在抽象工厂模式中,通常又是通过工厂方法模式来进行具体产品的创建。
命令模式,将命令的调用者和命令的执行者进行了解耦,命令对象封装了命令的执行者和一组相应的动作,命令的调用者不需要知道命令执行者的任何细节,而各个不同的执行者实现方式可以非常的多样化,只需要调用命令对象接口的执行方法。命令对象可以当成参数传进命令的调用者,同时可以给命令对象设定对应的undo方法,来回复命令执行之前的状态。另外,一组命令对象可以组成宏命令对象并当成普通命令对象来对待,这样可以一次性进行多个命令的调用。
适配器模式,目的在于把原有对象封装成客户需要的接口,从而达到解耦和方便使用的目的。而门面模式的出发点则是封装复杂,对外提供简单易用的接口,当然这也会带来解耦的好处。
模板方法模式,通过定义算法的框架来控制算法执行,同时达到算法复用的目的,在算法流中可以有具体方法,抽象方法(需要每个子类必须覆盖),钩子方法(hook方法,提供默认实现,子类可以选择实现)。与策略模式比较都是为了封装算法,但模板方法提供了算法的部分实现,而策略则是整个算法,另外策略模式基于组合来实现,而模板方法则基于继承。
分享到:
相关推荐
### 软件体系结构与设计模式复习指南 #### 一、软件体系结构概述 **软件体系结构**是指具有一定形式的结构化元素的集合,主要包括处理构件、数据构件和连接构件。这些元素构成了软件的基本框架。 1. **处理构件**...
这份名为"软件设计模式与体系结构(期末复习2)简答题背诵.rar"的压缩包,显然针对的是学生们的期末复习,特别是那些正在准备考试或者考研的同学。下面将详细阐述这两个主题以及它们在软件工程中的应用。 设计模式...
软件设计模式总复习的知识点非常丰富,涵盖了软件设计目标、面向对象的原则、设计原则和设计模式等多个方面。 一、软件设计目标 软件设计目标主要包含以下几个方面: 1. 正确性:软件的功能需求能否得到正确实现。...
设计模式期末复习资料 本文档提供了设计模式的课程重点总结,包括了常见的设计模式和其类图实现。设计模式是软件工程中的一门重要课程,它们提供了一些通用的解决方案来解决软件设计中的一些常见问题。 面向对象的...
这份压缩包“软件设计模式与体系结构(期末复习1).rar”包含了对这一主题的复习资料,特别是对于期末考试和考研的学生来说,是一份宝贵的参考资料。 首先,我们要理解设计模式的概念。设计模式是在特定上下文中...
### Java设计模式选择题复习知识点详解 #### 工厂系列模式的优缺点 - **优点**: - **解耦**:工厂模式的核心优势之一在于它让用户代码与具体产品的实现相分离,使得用户无需了解产品是如何创建的,只需要知道...
这份复习题主要涉及了设计模式的不同方面,包括优缺点、分类、实际应用以及与其他模式的区别。 首先,工厂模式是一种创建型设计模式,它提供了创建对象的抽象接口,使得客户端代码无需知道具体创建的对象是哪个类的...
"设计模式复习题.doc" 以下是根据给定文件生成的相关知识点: 1. 设计模式的种类: - 工厂方法模式 - 抽象工厂模式 - 单件模式 - 组合模式 - 外观模式 - 观察者模式 - 模板方法模式 - 迭代器模式 - 代理...
软件设计模式复习题 软件设计模式是一种创建可维护、可扩展、灵活的软件系统的方法论。软件设计模式的基本思想是:软件实体应当对扩展开放,而对修改关闭,抽象不应该依赖于细节,细节应该依赖于抽象,一个类或模块...
复习DAO模式时,需要理解其设计原则,如单一职责、开闭原则,并掌握如何在实际项目中应用DAO。 最后是Oracle数据库。Oracle提供了丰富的功能,如表、视图、索引、存储过程、触发器等,支持复杂的SQL查询。复习...
本篇复习资料主要围绕C++语言,面向对象程序设计原则以及八种软件设计模式进行深入探讨。 首先,C++是一种支持面向对象编程(OOP)的语言,其三大核心要素包括封装、继承和多态。封装是将数据和操作这些数据的方法...
### 设计模式解析复习提纲 #### 一、准备知识 **1.1 UML中的类图简介** - **类图的基本概念**:类图在软件工程中扮演着至关重要的角色,尤其在设计模式的学习与应用过程中。它主要用于描述系统的静态视图,包括类...
Java设计模式是面向对象编程中的一种重要设计原则,它们提供了在特定场景下解决问题的模板,帮助开发者编写可重用、可扩展和易于维护的代码。本文将深入探讨工厂系列模式、MVC模式、装饰者模式、设计模式的分类、...
重点: 感知器,(批处理算法,改进);如何做多类分类(一对多,多对一),svm;反向传播算法(优缺点)...adaboost那节课的重点是模型选择的原则,分类器集成的基本方法,以及adaboost的原理及其训练的基本计算步骤。
Java软件设计模式是软件开发中的一种重要思想,它总结了在特定上下文中解决常见问题的有效...在复习Java软件设计模式时,不仅需要理解每个模式的基本概念,还要学会在实际项目中选择合适的设计模式,以解决特定问题。
### UML和模式应用期末复习知识点汇总 #### 简答题知识点详解 **UML的三个主要特性** 1. **UML是一种可视化语言**:它通过图表的方式展示系统的结构和行为,使得开发者能够清晰地看到系统的各个组成部分及其相互...
这份设计模式复习提纲涵盖了设计模式的基本概念、面向对象设计原则以及设计模式的分类和优点。 首先,状态图是用于描绘对象在其生命周期内可能经历的各种状态及触发状态转换的事件的图表,有助于理解对象的行为动态...
建造者模式将复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式适用于当对象的创建过程复杂,需要多个步骤,且希望独立于表示的创建。 7. **开发自己的能力**: 这个文件名可能指的是...
2. **"不要与陌生人说话"原则**:这是迪米特法则(Demeter Principle)的通俗表述,强调一个对象应该只与直接的朋友通信,避免不必要的耦合。 3. **常见设计模式数量**:通常所说的23种设计模式,源自《设计模式:...