随笔分类 -  设计模式

摘要:由于应用开发过程中先前完成的类型会因为需求变化(无论是业务功能,还是技术实现或是出于集成的需要)增加新的方法,如果直接在基类中增加新的方法,其派生类型可能需要相应进行比较繁琐的处理。而使用访问者模式可以做到在不改变既有类型层次的前提下,运行时动态为类型层次的每个类增加新的操作。 访问者模式 GOF对 阅读全文
posted @ 2020-09-24 21:41 zhixin9001 阅读(192) 评论(0) 推荐(0) 编辑
摘要:在策略模式中,一个类的行为或算法可以在运行时动态更改。 GOF对策略模式的描述为: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algori 阅读全文
posted @ 2020-09-19 20:44 zhixin9001 阅读(258) 评论(0) 推荐(0) 编辑
摘要:状态模式允许一个对象在其内部状态改变时改变它的行为。用电梯来举例,电梯可以认为具有开门、关门、运行、停止四种状态,这四种状态之间的切换具有多种限制,比如在开门状态下不电梯不能运行,只能转为关门状态;在运行状态下,电梯只能转为停止状态... 设想一下,如果要常规的if-else或者switch-cas 阅读全文
posted @ 2020-09-07 21:31 zhixin9001 阅读(276) 评论(0) 推荐(0) 编辑
摘要:观察者模式是一种平时接触较多的模式。它主要用于一对多的通知发布机制,当一个对象发生改变时自动通知其他对象,其他对象便做出相应的反应,同时保证了被观察对象与观察对象之间没有直接的依赖。 GOF对观察者模式的描述为: Define a one-to-many dependency between obj 阅读全文
posted @ 2020-08-29 21:52 zhixin9001 阅读(209) 评论(0) 推荐(0) 编辑
摘要:备忘录模式可以在不破坏封装的前提下,将一个对象的状态捕捉(Capture)住,并在外部存储,从而可以在需要的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代器模式一同使用。 GOF对备忘录模式的描述为: Without violating encapsulation, captur 阅读全文
posted @ 2020-08-24 21:32 zhixin9001 阅读(229) 评论(0) 推荐(0) 编辑
摘要:一个软件系统中往往包含了很多的类,这些类之间会存在互相的调用,随着系统的升级、功能的扩展,这些相互调用关系会变得非常复杂,,大量的相互连接使得这样一个类型系统不太可能在没有其他类支持的情况下独立完成工作,久而久之这些类将变得像一个不可分割的整体,内部有着错综复杂的关联。这会导致后期维护特别困难,对系 阅读全文
posted @ 2020-08-23 21:23 zhixin9001 阅读(208) 评论(0) 推荐(0) 编辑
摘要:命令模式 适用场景 Redo & Undo 命令模式的优缺点 命令模式 命令模式是对一类对象公共操作的抽象,它们具有相同的方法签名,所以具有类似操作,可以被抽象出来,成为一个抽象的“命令”对象。请求以命令的形式包裹在对象中,并传给调用对象。调用者寻找可以处理该命令的合适的对象,并把该命令传给相应的对 阅读全文
posted @ 2020-08-05 21:56 zhixin9001 阅读(242) 评论(0) 推荐(0) 编辑
摘要:项目中有时会遇到某类问题出现得非常频繁,而且它们的变化也基本上以一些规律性的方式进行变化。对于这类问题,如果编写一个对象类进行处理,随着业务变更,将需要频繁地修改代码、编译、部署。与其反复做这种工作,不如把它们抽象为一个语言(语法定义可能很简单,也可能很复杂),这样就可以极大地增加代码的业务适应性。 阅读全文
posted @ 2020-08-03 21:09 zhixin9001 阅读(160) 评论(0) 推荐(0) 编辑
摘要:模板方法模式 模板方法模式是面向对象系统中非常朴实的一种模式,体现出面向对象设计中继承和多态的基本特征。在开发应用的过程中,往往会在初期规划一些较粗粒度的算法,而且对参与计算的对象进行抽象,明确算法会使用到哪些方法,每个方法可以提供哪些支持,但此时每个方法本身并没有细化;随着开发过程的展开,我们可能 阅读全文
posted @ 2020-08-02 22:42 zhixin9001 阅读(157) 评论(0) 推荐(0) 编辑
摘要:行为型模式 行为型模式关注于应用运行过程中算法的提供和通信关系的梳理。 相比于创建型模式和结构型模式,行为型模式包含了最多的设计模式种类,包括: 职责链模式 模板方法模式 解释器模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 访问者模式 职责链模式 职责链模式为了 阅读全文
posted @ 2020-07-29 22:13 zhixin9001 阅读(257) 评论(0) 推荐(0) 编辑
摘要:装饰模式 装饰模式的特点 动态撤销功能 装饰模式可以动态向一个现有的对象添加新的功能,同时又不改变其结构。就增加功能来说,使用继承的方式生成子类也可以达到目的,但随着扩展功能的不断增加,子类的数量会快速膨胀,而装饰模式提供了一种更加灵活的方案。 装饰模式 GOF对装饰模式的描述为: Attach a 阅读全文
posted @ 2020-07-20 20:47 zhixin9001 阅读(281) 评论(0) 推荐(0) 编辑
摘要:组合模式 透明模式与安全模式 对组合的筛选遍历 无论是在生活中还是项目中,我们经常会遇到具有“部分-整体”概念的对象,比如员工与团队的关系,这就类似树形结构,可能具有很多的嵌套层次和分支,把这种复杂性直接暴露给调用端是不合适的。 组合模式 借助组合模式,可以将这类具有“部分-整体”的对象组合成树形的 阅读全文
posted @ 2020-07-17 21:25 zhixin9001 阅读(284) 评论(0) 推荐(0) 编辑
摘要:桥接模式的概念与实现 为什么叫桥接模式 桥接模式的适用场景 继承是面向对象的三大特性之一,但很多时候使用继承的结果却不尽如人意。除了人尽皆知的紧耦合问题外,有的时候还会导致子类的快速膨胀。 设想这样一个场景:最初设计的时候有一个类型Product,但后来随着新需求的出现,X原因导致了它的变化,X有两 阅读全文
posted @ 2020-07-15 22:38 zhixin9001 阅读(230) 评论(0) 推荐(0) 编辑
摘要:结构型模式 适配器模式 类适配器和对象适配器 结构型模式 结构型模式的重点在于如何通过灵活的体系组织不同的对象,并在此基础上完成更为复杂的类型(或者类型系统),而参与组合的各类型之间始终保持尽量松散的结构关系。 结构型模式包括以下几种: 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 阅读全文
posted @ 2020-07-13 21:39 zhixin9001 阅读(230) 评论(0) 推荐(0) 编辑
摘要:原型模式 原型模式的适用场景 浅拷贝 深拷贝 用Initialize方法修改初始化状态 原型模式与之前学习的各种工厂方法、单例模式、建造者模式最大、最直观的区别在于,它是从一个既有的对象“克隆”出新的对象,而不是从无到有创建一个全新的对象。与对文件的拷贝类似,原型模式是基于现有的对象拷贝新的对象。 阅读全文
posted @ 2020-07-09 22:11 zhixin9001 阅读(246) 评论(0) 推荐(0) 编辑
摘要:什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 虽然与 阅读全文
posted @ 2020-07-07 20:38 zhixin9001 阅读(549) 评论(0) 推荐(0) 编辑
摘要:抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式。简单工厂的职责非常简单:构造某个实体类型,然后把实例作为抽象类型返回; 工厂方法模式则进一步抽象出一个抽象的创建者和一个抽象的产品类型,而实际的执行过程是具体工厂创建具体的产品类型,具体工厂和具体产 阅读全文
posted @ 2020-07-05 17:51 zhixin9001 阅读(219) 评论(0) 推荐(0) 编辑
摘要:单例模式 线程安全的Singleton 会破坏Singleton的情况 线程级Singleton 单例模式是几个创建型模式中最独立的一个,它的主要目标不是根据客户程序调用生成一个新的实例,而是控制某个类型的实例数量只有一个。 GOF对单例的描述为: Ensure a class only has o 阅读全文
posted @ 2020-07-02 22:33 zhixin9001 阅读(207) 评论(0) 推荐(0) 编辑
摘要:创建型模式 简单工厂模式 工厂方法模式 IOC与工厂方法模式的结合 泛型工厂 委托工厂 创建型模式 创建型模式可以隔离客户程序对需要实例化类型的依赖关系,这类模式一般通过将实例化具体对象的职责委托给第三方对象的方式,使得客户程序或者外部系统在获得所需的具体类型实例的同时,而不必对其发生直接的引用。 阅读全文
posted @ 2020-07-02 22:31 zhixin9001 阅读(245) 评论(0) 推荐(0) 编辑
摘要:代理模式(Proxy):为另一个对象提供一个替身或占位符以控制对这个对象的访问。 UML类图: Subject为RealSubject和Proxy提供了统一的接口,Proxy就是RealSubject的代理。RealSubject是真正做事的对象,是被Proxy代理和控制访问的对象。Proxy持有R 阅读全文
posted @ 2016-12-20 06:44 zhixin9001 阅读(185) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示