
设计模式
设计模式
QPee是谁
这个作者很懒,什么都没留下…
展开
-
设计模式
教材及相关博客学习记录...解决编程里某类问题的通用模板,对同一类问题的一种代码设计的总结。(¬‸¬) ?六大原则1、开闭原则对扩展开放,对修改关闭2、里氏代换原则子类都可以做到代替基类的出现3、依赖倒转原则针对接口编程,依赖于抽象而非具体4、接口隔离原则使用多个隔离的接口,比使用单个接口要好(降低类之间的耦合度)5、迪米特法则(最少知道原则)...原创 2020-01-17 14:58:46 · 153 阅读 · 0 评论 -
调停者模式
一、调停者模式的概念调停者模式又名中介者模式,包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。抽象调停者[Mediator]:定义出同事对象到调停者对象的接口,其中主要方法是一个(或多个)事件方法。...原创 2020-01-14 11:56:06 · 373 阅读 · 0 评论 -
享元模式
一、享元模式的概念享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象,最大可能的实现对象复用。享元工厂[FlyweightFactory]:用于创建具体享元类,维护相同的享元对象。当请求对象已经存在时,直接返回对象,不存在时,新建对象。抽象享元[Flyweight]:定义需要共享的对象业务接口。共享子类[ConcreteFlyweight]:实现抽象享元...原创 2019-10-30 21:59:54 · 172 阅读 · 0 评论 -
命令模式
一、命令模式的概念命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。(请求者—命令—接收者)我们发出的请求对应一个命令,无需关心命令何时由谁来执行,接收者完成请求。Client:创建具体的命令对象,并且设置命令对象的接收者。Invoker:调用命令对象执行请求,通常会持有...原创 2019-03-30 21:40:31 · 217 阅读 · 0 评论 -
组合模式
一、组合模式的概念组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。抽象组件(Component):给参加组合的对象定义出公共的接口及其默认行为,可以用来管理所有的子对象。合成对象通常把它所包含的子对象当做类型为Compon...原创 2019-04-08 22:18:53 · 182 阅读 · 0 评论 -
桥接模式
一、桥接模式的概念将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。(系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少耦合)抽象类[Abstraction]扩充抽象类[RefinedAbstraction]实现类接口[Imple...原创 2019-06-13 14:49:50 · 140 阅读 · 0 评论 -
备忘录模式
一、备忘录模式的概念备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。Originator[发起人]:负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。M...原创 2019-06-13 15:14:19 · 125 阅读 · 0 评论 -
访问者模式
一、访问者模式的概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。将数据操作和数据结构分离的设计模式访问者角色[Visitor]:定义了对每个 Element 访问的行为,它的参数就是被访问的元素,它的方法个数理论上与元素的个数是一样的,因此,访问者模式要求元素的类型要稳定,如果经常添加、移除元素类,必然会导...原创 2019-08-03 14:53:43 · 213 阅读 · 0 评论 -
解释器模式
一、解释器模式的概念解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。Context[上下文类]:包含解释器之外的一些全局信息Ab...原创 2019-09-07 18:06:22 · 148 阅读 · 0 评论 -
构造者模式
一、构造者模式的概念将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Director[指导者]:调用具体构造者角色以创建产品对象,指导者并没有产品类的具体知识,只负责保证对象各部分完整创建或者按某种顺序创建。Builder[抽象构造者]:这个角色用来规范产品对象各个组成部分的创建,对复杂对象的创建过程加以抽象,给出一个抽象接口,并不涉及具体对象的创建。...原创 2019-09-15 17:33:50 · 345 阅读 · 0 评论 -
状态模式
一、状态模式的概念当一个对象的内部状态改变时允许改变其的行为,这个对象看起来好像修改了它的类状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同的一系列类当中,简化复杂的判断逻辑。抽象状态类[State]:定义一个接口封装与Context的一个特定状态相关的行为具体状态类[ConcreteState]:每个子类实现一个与Co...原创 2019-09-25 17:37:25 · 182 阅读 · 0 评论 -
原型模式
一、原型模式的概念原型模式是创建型模式,通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例被复制的实例就是我们所称的“原型”,这个原型是可定制的客户端(Client):提出创建对象的请求抽象原型(Prototype):一个Java接口或Java抽象类,此角色给出所有的具体原型类所需的接口具体原型(ConcretePrototype):被复制的对象二、...原创 2019-04-03 21:10:26 · 219 阅读 · 0 评论 -
外观模式
一、外观模式的概念外观模式为子系统提供一个统一的高层接口,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度。外观角色(Facade):客户端调用这个角色的方法。此角色知晓相关的子系统的功能和责任。正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去。子系统角色(SubSystem):可以同时有...原创 2019-03-18 21:17:03 · 179 阅读 · 0 评论 -
工厂方法模式
一、工厂方法模式的概念工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。工厂方法模式通过定义一个单独的创建对象的方法来解决问题,由子类实现这个方法来创建具体类型的对象。对象创建中的有些过程包括决定创建哪个对象、管理对象的生命周期,以及管理特定对象的创建和销毁的概念。(维基百科)二、工厂方法模式的实现1、P...原创 2019-01-17 17:50:34 · 216 阅读 · 0 评论 -
抽象工厂模式
一、抽象工厂模式的概念抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要关心它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。(维基百科)二、抽象...原创 2019-01-17 19:21:05 · 195 阅读 · 0 评论 -
代理模式
一、代理模式的概念代理(Proxy)模式:为其他对象提供一个代理以控制对某个对象的访问,即通过代理对象访问目标对象二、代理模式的实现1、静态代理在程序运行前就已经存在代理类的字节码文件代理类和委托类的关系在运行前确定//统一接口public interface Subject{ public void doAction();}//...原创 2019-02-02 23:51:03 · 153 阅读 · 0 评论 -
迭代器模式
一、迭代器模式的概念迭代器模式的目的是让用户透过特定的接口巡访容器中的每一个元素而不用了解底层的实现二、迭代器模式的实现//抽象集合public interface Aggregate { public void add(Object obj); public Object get(int index); public int si...原创 2019-02-15 10:19:10 · 155 阅读 · 0 评论 -
适配器模式
一、适配器模式的概念将一个类的接口转接成用户所期待的一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中即:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于接口不兼容而不能交互的类可以一起工作。1.1对象适配器适配器容纳一个它包裹...原创 2019-02-08 23:18:24 · 179 阅读 · 0 评论 -
装饰器模式
一、装饰器模式的概念装饰器模式:一种动态地往一个类中添加新的行为的设计模式,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法,修饰类必须和原来的类有相同的接口说明:Comp...原创 2019-02-13 12:20:14 · 177 阅读 · 0 评论 -
模版方法模式
一、模版方法模式的概念模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。(基于继承的代码复用技术)AbstractClass[抽象类]:抽象模版,定义并实现模版方法。它给出顶级逻辑的骨架,而逻辑的组成步骤推迟到子类实现。ConcreteClass[具体子类]:实现父类中的抽象方法。每个...原创 2019-02-28 11:28:14 · 158 阅读 · 0 评论 -
策略模式
一、策略模式的概念策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法环境角色[Context]:持有一个Strategy的引用抽象策略角色[S...原创 2019-02-25 10:46:25 · 204 阅读 · 0 评论 -
责任链模式
一、责任链模式的概念责任链模式包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。抽象处理者[Handler]:定义了处理请求的接口或者抽象类,提供了处理请求的的方法和设置下一个处理者的方法。具体处理者[ConcreteHand...原创 2019-03-01 12:17:24 · 137 阅读 · 0 评论 -
观察者模式
一、观察者模式的概念观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象并且在它本身的状态改变时主动发出通知,通过调用各观察者所提供的方法来实现此种模式通常被用来实时事件处理系统观察者模式又叫做发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式抽象主题(Subject):抽象主题角色把所有对观察者对象的引用保存在一个聚集里,每个主题都可以...原创 2019-03-12 09:37:12 · 182 阅读 · 0 评论 -
单例模式
一、单例模式的概念单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理...原创 2019-01-04 16:00:52 · 170 阅读 · 0 评论