设计模式
阿川xiang
这个作者很懒,什么都没留下…
展开
-
第一章 策略模式
一、策略模式示例此示例主要以鸭子的特征为例子:游泳是不可变属性;叫声和飞行行为是可变属性1.1、注意点分析项目中的可变部分和不可变部分,可变部分最好使用单独的接口来表达以提升代码的复用性多用组合少用继承、用行为类组合而不是行为的继承,这样更具有弹性:比如下面的飞行行为接口和它的子类就是一个组合但是不要用继承来做。很多类库或者框架就是用设计模式来做的1.2、超类Duck描述:...原创 2019-08-23 17:10:19 · 122 阅读 · 0 评论 -
第十五章 桥接模式
一、模式示例1.1、原理1、定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦2、介绍意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类...原创 2019-09-11 10:14:27 · 378 阅读 · 0 评论 -
第十六章 适配器模式
一、模式示例1.1 原理1、定义:适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。怎样做: 在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。分类:根据适配器...原创 2019-09-11 16:44:06 · 145 阅读 · 0 评论 -
第十七章 解释器模式
一、模式示例1.1、原理1、定义解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。2、介绍意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建...原创 2019-09-11 22:10:08 · 383 阅读 · 0 评论 -
第十八章 中介者模式
一、模式示例1.1、原理1、定义用一个中介者对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。2、介绍优点:1、简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。2、提供系统的灵活性,使得各个同事对象独立而易于复用。缺点:1、中介者模式中,中介者角色承...原创 2019-09-11 23:05:54 · 106 阅读 · 0 评论 -
第十九章 责任链模式
一、模式示例原创 2019-09-12 11:40:34 · 114 阅读 · 0 评论 -
第二十章 迭代模式
一、模式示例1.1、原理1、定义迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式2、介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时...原创 2019-09-12 14:37:35 · 110 阅读 · 0 评论 -
第二十一章 模板方法模式
一、模式示例1.1、原理1、定义在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。2、介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决...原创 2019-09-12 15:51:37 · 547 阅读 · 0 评论 -
第二十二章 备忘录模式
一、模式示例1.1、原理1、定义备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。2、介绍意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保...原创 2019-09-12 16:46:32 · 198 阅读 · 0 评论 -
第二十三章 状态模式
一、模式示例1.1、原理1、定义在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。2、介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),...原创 2019-09-12 17:52:57 · 99 阅读 · 0 评论 -
第二十四章 命令模式
一、模式示例1.1、原理1、定义命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。2、介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一...原创 2019-09-12 22:49:32 · 112 阅读 · 0 评论 -
第十四章 组合模式
一、模式示例1.1、原理原创 2019-09-08 22:12:22 · 130 阅读 · 0 评论 -
第十三章 外观模式
一、模式示例1.1、原理1、定义外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。2、介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层...原创 2019-09-06 17:28:50 · 139 阅读 · 0 评论 -
第十二章 代理模式
一、模式示例1.1、原理1、定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。2、作用中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们...原创 2019-09-03 19:00:19 · 156 阅读 · 0 评论 -
第二章 简单工厂模式
一、模式入门原创 2019-09-02 15:53:51 · 141 阅读 · 0 评论 -
第三章 工厂方法模式
一、模式示例定义:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。1.1、原理url类图:主要角色:1、抽象工厂角色:工厂方法模式的核心,任何工厂类都必须实现这个接口2、具体工厂角色:抽象工厂的实现,负责实例化具体的产品对象3、抽象角色:所有产品角色的父类,负责描述所有产品示例的公共接口4、产品角色:模式所创建的具体示...原创 2019-09-02 16:50:35 · 93 阅读 · 0 评论 -
第四章 抽象工厂模式
一、模式示例定义:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。1.1、原理UML图角色分类:1、抽象工厂角色:模式的...原创 2019-09-02 18:25:21 · 370 阅读 · 0 评论 -
第五章 工厂模式在开发中的作用
一、面试题1.1 需求1、 写出一个简单的计算器public class TestMain { public static void main(String[] args) { System.out.println("====== 简单计算程序 ======="); System.out.println("输入第一个参数:"); ...原创 2019-09-02 22:09:49 · 139 阅读 · 0 评论 -
第六章 单例模式
一、模式示例1.1、原理1、分类单例模式主要分为:饿汉式、懒汉式、双重检查2、UML图3、为什么要使用单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1.2、代码示例1、饿汉式单例模式pu...原创 2019-09-03 09:52:11 · 97 阅读 · 0 评论 -
第七章 原型模式
一、模式示例1.1、原理1、介绍意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运行期建立和删除原型。何时使用:1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是在运行时刻指定时,例如,通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数...原创 2019-09-03 11:06:01 · 126 阅读 · 0 评论 -
第八章 建造者模式
一、模式示例1.1、原理1、什么是构建者模式:建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。2、介绍:意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。...原创 2019-09-03 13:39:19 · 201 阅读 · 0 评论 -
第九章 装饰模式
一、模式示例1.1、原理1、定义装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。2、介绍意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更...原创 2019-09-03 14:51:31 · 137 阅读 · 0 评论 -
第十章 观察者模式
一、模式示例1.1、原理1、定义当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。2、介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低...原创 2019-09-03 16:27:51 · 204 阅读 · 0 评论 -
第十一章 享元模式
一、模式示例1.1、原理1、定义主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。2、介绍意图:运用共享技术有效地支持大量细粒度的对象。主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。...转载 2019-10-09 09:11:20 · 92 阅读 · 0 评论 -
第二十五章 访问者模式
一、模式示例1.1、原理1、定义在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。2、介绍意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操...原创 2019-09-12 23:02:35 · 116 阅读 · 0 评论