随笔分类 -  设计模式

23种设计模式JAVA 实现目录总结
摘要:曾看了不少的有关设计模式的文章,有的提供的实现在现在看来是有些问题,所以现在对以前看过的有关设计模式的文章在这里总结一下,随笔中有引用其他资料,并根据自己的理解重新实现了一次,23种设计模式中,并没有提供解释器模式及代理模式实现。 今整理如下,代码实现在https://github.com/m249 阅读全文
posted @ 2017-10-25 19:37 啊哈咧 阅读(318) 评论(0) 推荐(0)
访问者模式
摘要:抽象访问者(Visitor):声明所有访问者需要的接口 具体访问者(ConcreteVisitor):实现抽象访问者声明的接口 抽象节点元素(Element):提供一个接口,能够接受访问者作为参数传递给节点元素 具体节点元素(ConcreteElement):实现抽象节点元素声明的接口 结构对象(O 阅读全文
posted @ 2017-10-24 23:01 啊哈咧 阅读(200) 评论(0) 推荐(0)
迭代器模式
摘要:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 迭代器模式的结构 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。 具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayLi 阅读全文
posted @ 2017-10-24 22:18 啊哈咧 阅读(111) 评论(0) 推荐(0)
中介者模式
摘要:中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 中介者模式的结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对 阅读全文
posted @ 2017-10-24 21:58 啊哈咧 阅读(175) 评论(0) 推荐(0)
简单工厂模式
摘要:Product:抽象产品角色,它定义了这个产品的通用属性,相当于模子,它定义了一些功能,这些功能可以由子类去实现 ConcreteProduct:具体产品角色,它实现了抽象产品所定义的功能,每个 ConcreteProduct 相当于一个产品种类 SimpleFactory:具体工厂模式类,它实现了 阅读全文
posted @ 2017-10-24 20:42 啊哈咧 阅读(200) 评论(0) 推荐(0)
责任链模式
摘要:责任链模式就是很多对象由每个对象对其下家的引用而连接起来形成一条链,请求在这条链上传递,直到链上的某个对象处理此请求,或者每个对象都可以处理请求,并传给“下家”,直到最终链上每个对象都处理完 通常责任链械包括下面几个角色 1、Handler(抽象处理者):定义一个处理请求的接口 2、Concrete 阅读全文
posted @ 2017-10-24 20:35 啊哈咧 阅读(175) 评论(0) 推荐(0)
状态模式
摘要:在状态模式(State Pattern)中,类的行为是基于它的状态改变的。 模式中的角色 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。 抽象状态(State):定义一个接口以封装使用上下文 阅读全文
posted @ 2017-10-24 20:17 啊哈咧 阅读(178) 评论(0) 推荐(0)
享元模式
摘要:享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象 Flywieght FlyweightFa 阅读全文
posted @ 2017-10-24 19:54 啊哈咧 阅读(138) 评论(0) 推荐(0)
备忘录模式
摘要:备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象 备忘录模式的结构 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。 管理角色:对备忘录 阅读全文
posted @ 2017-10-23 22:17 啊哈咧 阅读(107) 评论(0) 推荐(0)
组合模式
摘要:用于把一组相似的对象当作一个单一的对象 涉及角色: 1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。 3.Composite 定义有枝节点行 阅读全文
posted @ 2017-10-23 21:59 啊哈咧 阅读(138) 评论(0) 推荐(0)
命令模式
摘要:命令模式通常包含下面几个角色: 1、Client:创建一个命令,并决定接受者 2、Command:命令接口,定义一个抽象方法 3、ConcreteCommand:具体命令,负责调用接受者的相应操作 4、Invoker:请求者,负责调用命令对象执行请求,调用者可能会对在调用时加入自己需求 5、Rece 阅读全文
posted @ 2017-10-23 21:46 啊哈咧 阅读(122) 评论(0) 推荐(0)
桥接模式
摘要:桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化 Abstraction Implementor ConcreteAbstraction ConcreteImplementor Client 阅读全文
posted @ 2017-10-22 00:34 啊哈咧 阅读(127) 评论(0) 推荐(0)
建造者模式
摘要:建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可 阅读全文
posted @ 2017-10-21 23:01 啊哈咧 阅读(116) 评论(0) 推荐(0)
装饰器模式
摘要:Component:抽象组件角色,定义一组抽象的接口,规定这个被装饰组件都有哪些功能 ConcreteComponent:实现这个抽象组件的所有功能 Decorator:装饰器角色,它持有一个Component对象实例的引用,定义一个与抽象组件一致的接口 ConcreteDecorate:具体装饰器 阅读全文
posted @ 2017-10-21 21:32 啊哈咧 阅读(133) 评论(0) 推荐(0)
原型模式
摘要:原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就 阅读全文
posted @ 2017-10-21 21:31 啊哈咧 阅读(164) 评论(0) 推荐(0)
门面设计模式
摘要:门面设计模式主要用在在一个大的系统中有多个子系统时,多个子系统会设计一个门面,把别的系统感兴趣的数据封闭起来,通过这个门面来进行访问 Facade SubSystemA SubSystemB Client 阅读全文
posted @ 2017-10-21 20:19 啊哈咧 阅读(153) 评论(0) 推荐(0)
模板模式
摘要:Abstract(抽象模板):定义了完整的框架,方法的调用顺序通常已经确定,但是还会定义一些抽象的方法给子类实现 Concrete(具体模板实现类):实现抽象模板中定义的抽象方法,实现具体的功能,组成一个完整逻辑 AbstractTemplate ConcreteTemplateA Concrete 阅读全文
posted @ 2017-10-21 12:39 啊哈咧 阅读(191) 评论(0) 推荐(0)
策略模式
摘要:Context:使用不同的策略的环境,它可以根据自身的条件选择不同的策略实现类来完成所要的操作。它持有一个策略实例的引用,创建具有策略对象的方法也可以由它完成 Strategy:抽象策略,定义每个策略都要实现的策略方法 Strategy ConcreteStrateA ConcreteStrateB 阅读全文
posted @ 2017-10-21 12:29 啊哈咧 阅读(358) 评论(0) 推荐(0)
观察者模式
摘要:观察者必须在主题中注册,然后主题才能将通知观察者 观察者模式通常包括下面几个角色: 1、Subject:抽象主题,它负责管理所有观察者的引用,定时定义主要的事件操作 2、ConcreteSubject 具体主题:它实现了抽象主题定义的所有接口,当自己发生变化时会通知所有观察者 3、Observer 阅读全文
posted @ 2017-10-21 12:18 啊哈咧 阅读(135) 评论(0) 推荐(0)
适配器模式
摘要:Target(目标接口):所要转换的所期待的接口 Adaptee(源角色):需要适配的接口 Adapter (适配器):将源接口适配成目标接口,继承源接口,实现目标接口 Adaptee Target Adapter ConcreteAdaptee Client 阅读全文
posted @ 2017-10-21 11:10 啊哈咧 阅读(129) 评论(0) 推荐(0)