随笔分类 - 设计模式
编程开发之23种设计模式
摘要:行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。该组设计模式众多,如下我们着重介绍一下命令模式VS策略模式、状态模式VS策略模式、观察者模式VS责任链模式。 命令模式和策略模式类图很相似,只是命令模式多了一
阅读全文
摘要:结构类模式包括适配器模式、桥梁模式、组合模式、装饰模式、门面模式、享元模式和代理模式。之所以称其为结构类模式,是因为他们都是通过组合类或对象产生更大结构以适应更高成层次的逻辑需求。我们来分析一下装饰模式和代理模式、装饰模式和适配器模式。 首先要说明的是装饰模式是代理模式的特殊应用,两者的共同点是有相
阅读全文
摘要:创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,他们能够提供对象的创建和管理职责。其中单例模式和原型模式模式非常容易理解,单例模式是要保持在内存中只有一个对象,原型模式是通过复制的方式产生一个新的对象。而工厂方法模式、抽象工厂模式和建造者模式,这三者之间有较大的相似性。 工
阅读全文
摘要:桥梁模式:也叫作桥接模式,是个比较简单的模式,将抽象和实现解耦,使两者可以独立地变化(Decouple an abstraction from its implementation so that the two can vary independently)。 桥梁模式的重点在解耦,我们先来看看桥
阅读全文
摘要:享元模式:是一种重要的池技术的实现方式,使用共享对象可有效地支持大量的细粒度的对象。 享元模式的定义提出了两个要求:细粒度的对象和共享对象,分配太多的对象到应用程序当中去将有损程序的性能,而且还容易造成内存溢出,通过享元模式的共享对象的技术来解决这些问题。首先我们先了解一下对象的内部状态(intri
阅读全文
摘要:状态模式:当一个对象内在状态改变时允许改变行为,这个对象看起来像改变了其类(Allow an object to alter its behavior when its internal state changes. The object will appear to change its clas
阅读全文
摘要:访问者模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 先来举个例子吧,一个公司有各个层面的员工,有码农、技术主管、销售主管、总经理等等,这些员工都有个人基本信息(姓名、性别)、薪金、工作职责或业绩,那么如何以报表的形式展示这些信息呢,如
阅读全文
摘要:备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态(其实不一定是在对象之外,可以是类自主备份和恢复),这样以后就可以将该对象恢复到原先保存的状态。 通俗的说备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法,其通用类图如下: Originator发起人
阅读全文
摘要:门面模式:也叫作外观模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更容易使用。 门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生,门面模式不参与子系统内的业务逻辑,其通用类图如下:
阅读全文
摘要:观察者模式:所有依赖于定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的通用类图如下: 我们先来解释一下观察者模式中的几个角色名称: Observer观察者:观察者接收到消息后,立即进行update()操作,对接收到的信息进行处理。
阅读全文
摘要:适配器模式:将一个类的接口变成客户端所期待的另一种接口,从而使原本接口不匹配而无法工作的两个类能够在一起工作。 适配器模式分为两种,一种是类适配器,一种是对象适配器,其通用类图分别如下: 已知某公司现有一员工管理系统,我们现在从改系统的员工个人信息获取和薪金获取两个模块进行分析,从而解释适配器的两种
阅读全文
摘要:策略模式:也叫作政策模式,定义一组算法,将每个算法都封装起来,并且使他们之间可以互换 策略模式的使用就是面向对象的继承和多态机制,其通用类图如下: Context封装角色,也叫作上下文角色,屏蔽高层模块对策略、算法的直接访问,封装可能的变化。 Istrategy抽象策略角色,策略算法家族的抽象,通常
阅读全文
摘要:装饰模式 装饰模式:一种常见的模式,动态地给一个对象添加一些额外的职责,就增加功能来看,装饰模式比生成子类更加灵活。 装饰模式的通用类图如下: Component抽象构件:Component是一个接口或者是抽象类,就是我们需要装饰的核心对象。在装饰模式中,必然有一个最基本、最核心、最原始的接口或抽象
阅读全文
摘要:责任链模式 责任链模式:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点在“链”,由抽象类中的方法决定由那个实现类处理该请求,并返回结果,其通用类图如下: 抽象的处理者Handler实现三
阅读全文
摘要:命令模式 命令模式是一个高内聚的模式,将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 命令模式的通用类图如下: Receiver接收者角色,主要负责具体命令的执行 Command命令角色,需要执行的所有命令的声明 Invok
阅读全文
摘要:中介者模式 中介者模式定义:用一个中介对象封装一系列对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互(Define an object that encapsulates how a set of objects interact. Mediator
阅读全文
摘要:原型模式 原型模式:用原型实例指定创建对象的种类,并且通过拷贝原型创建新的对象(Specify the kinds of objects to create using a prototypical instance, and create objects by copying this proto
阅读全文
摘要:代理模式 代理模式:也被称为委托模式,为其他对象提供一种代理以控制对这个对象的访问(Provide a surrogate or placeholder for another object to control access to it)。 代理模式的通用类图中包含三种角色,抽象主体角色(Subj
阅读全文
摘要:建造者模式 建造者模式:也叫作生成器模式,将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示(Separate the construction of a complex object from its representation so that the same const
阅读全文
摘要:模板方法模式 模板方法模式:定义一个算法中的操作框架,而将一些步骤延迟到子类中。使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。(Define the skeleton of an algorithm in an operation, deferring some steps to su
阅读全文