设计模式
文章平均质量分 86
不想在山底徘徊的小蜗牛
走着瞧,才能把未来看的更好。
展开
-
设计模式之项目审批职责链模式
职责链模式定义: 为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。实现方式: 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。包含对象:Handler:抽象处理者,定义了处理请求所需的接口。ConcreteHandler(具体处理者):根据自己的职责实现了处理请求的接口,如果不能处理,那么就把这个请求转给和它保持联系的后继者(即success原创 2020-05-13 12:24:25 · 440 阅读 · 0 评论 -
不得不知的策略模式
策略模式定义: 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。包含角色:Context: 环境类Strategy: 抽象策略类ConcreteStrategy: 具体策略类UML图:实例分析: 现有两种鸭子,每种鸭子都有两种行为飞翔,叫唤的方法,但是不同的鸭子飞翔的能力不一样,叫唤的能力也不一样。这时鸭子的飞翔和叫唤各相当于一种策略。没种策略中又有不同的能力,现在就用策略模式解决不同的鸭子对应不同的具体策略原创 2020-05-13 11:07:41 · 158 阅读 · 0 评论 -
设计模式之实现游戏回档的备忘录模式
备忘录模式定义: 保存一个对象的某个状态,以便在适当的时候恢复对象。包含角色:Memento 包含了要被恢复的对象的状态。Originator 创建并在 Memento 对象中存储状态。Caretaker 对象负责从 Memento 中恢复对象的状态。UML图:实例分析:游戏回档:一个角色打boss,假设打之前状态为100,打的时候状态降低为20,打完了需要恢复以前的状态。此时就用备忘录模式进行记录打之前的状态,然后需要恢复的时候进行重新设置角色状态即可。实例代码:Originator原创 2020-05-12 18:47:16 · 461 阅读 · 0 评论 -
一个模拟聊天室实现的中介模式
中介者模式定义: 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。包含角色:Mediator: 抽象中介者ConcreteMediator: 具体中介者Colleague: 抽象同事类ConcreteColleague: 具体同事类UML图:实例解析: 一个聊天室(ChatRoom)充当中介者,接受member1,member2…(具体同事类)的消息接受到之后需原创 2020-05-12 17:29:38 · 480 阅读 · 0 评论 -
大名鼎鼎的观察者模式
观察者模式定义: 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。包含角色:Subject: 目标ConcreteSubject: 具体目标Observer: 观察者ConcreteObserver: 具体观察者UML图:实例分析:1,天气信原创 2020-05-12 11:17:57 · 82 阅读 · 0 评论 -
一看就会的迭代器模式
迭代器模式定义: 迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据包含角色:抽象容器角色(Aggregate):负责提供创建具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器角色(ConcreteAggregate):就是实现抽象容器的具体实现类,比如List接口的有序列表实现ArrayL原创 2020-05-11 20:33:08 · 92 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。目的将数据结构与数据操作相分离包含角色Visitor:接口或者抽象类ConcreteVisitor:具体的访问者ElementA、ElementB:具体的元素类ObjectStructure:定义当中所提到的对象结构U原创 2020-05-11 17:47:10 · 72 阅读 · 0 评论 -
设计模式之精彩好多玩的命令模式
命令模式定义: 将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。包含角色:Command: 抽象命令类ConcreteCommand: 具体命令类Invoker: 调用者Receiver: 接收者Client:客户类UML图:实例解析:一个遥控器同时操纵多个电器的开关,有电灯,电视,冰箱,洗衣机等电器,并且支持撤销功能原创 2020-05-11 12:25:00 · 130 阅读 · 0 评论 -
设计模式之可以灵活制作的模板模式
模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。包含角色抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。UML图实例背景豆浆制作流程:豆浆在制作过程中需要1,浸泡原材料(soak)2,有的豆浆可以添加辅料,有的不加(添加原创 2020-05-11 10:34:04 · 164 阅读 · 0 评论 -
带你了解耳熟能详的代理模式
代理模式定义: 给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。包含角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色UML图:代理模式之很好理解的静态代理:静态代理的实现:通过继承同一个类(Subject),然后在代理类(Proxy)中通过组合一个真实主题角色(RealSubject )实现,通过组合的对象进行调用正式角色的方法。客户端使用的时候直接调原创 2020-05-10 21:44:34 · 142 阅读 · 0 评论 -
大家都用过的享元模式
享元模式定义: 运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。细粒度对象: 能够共享的内部状态是有限的,因此享元对象一般都设计为较小的对象,它所包含的内部状态较少,这种对象也称为细粒度对象。内部状态: 内部状态是存储在享元对象内部并且不会随环境改变而改变的状态,因此内部状态可以共享。外部状态: 外部状态是随环境改变而改变的、不可原创 2020-05-10 17:45:45 · 89 阅读 · 0 评论 -
很好理解的外观模式
外观模式定义: 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。包含角色:Facade: 外观角色SubSystem:子系统角色UML图:外观模式包含了两种角色,Facade: 外观角色提供对外访问接口, SubSystem:子系统角色提供实际的功能。系统中有多个子系统,子系统的功能可以分层调原创 2020-05-10 16:01:01 · 119 阅读 · 0 评论 -
对象操作一致的组合模式
组合模式目的: 使用户对单个对象和组合对象操作实现一致性。对于叶子对象只存在特定操作,对于组合对象还可以包含叶子对象或者组合对象。包含对象:Component:抽象接口Composite:有孩子的对象Leaf:孩子UML图:实例:有个大学包含了学院,学院中包含了专业,看到这又是套娃的开始。现在学校,学院中均有添加和减少的操作,而专业中没有这些操作最小单位。Component:Componentpackage composite;public abstract class Compo原创 2020-05-09 20:54:33 · 178 阅读 · 0 评论 -
逐步添加的衣服装饰者模式
装饰者模式定义: 动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。模式包含角色:Component: 抽象构件ConcreteComponent: 具体构件Decorator: 抽象装饰类ConcreteDecorator: 具体装饰类UML图具体例子:原创 2020-05-09 11:09:36 · 164 阅读 · 1 评论 -
抽象与实现分离的桥接模式
桥接模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。角色:Abstraction:抽象类RefinedAbstraction:扩充抽象类Implementor:实现类接口ConcreteImplementor:具体实现类类图:桥接模式分为两层:抽象层,实现层。举个栗子:有两个披萨店生产披萨,一个为在北京,另一个在伦敦同时两个pizza店都生产两种pizza分别为Gre原创 2020-05-08 21:19:12 · 691 阅读 · 0 评论 -
设计模式-------适配器模式
适配器模式:适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。所包含角色:Target:目标抽象类Adapter:适配器类Adaptee:适配者类Client:客户类角色实例解读: 220V电压,5V电压,电压转换器需要将220V电压转换为5V电压给手机充电。在这个过程中。电压转换器充当适配器,将220V转换到5V,那么A原创 2020-05-08 18:52:14 · 131 阅读 · 0 评论 -
设计模式------建造者模式
建造者模式造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。通过建造者模式对对象的创建进行设计与描述,建造者模式...原创 2020-05-03 19:01:58 · 91 阅读 · 0 评论 -
设计模式------原型模式深克隆的两种方式
什么是深克隆,浅克隆?浅克隆:当克隆对象的时候,此对象有个引用指向其他对象,克隆出来的对象所引用的对象不改变。深克隆:当克隆对象的时候,此对象有个引用指向其他对象,克隆出来的对象所引用的对象改变。举个栗子:Student类中有个对象Teacher,当我们克隆Student对象时,Teacher的指向并没有改变,这就是浅克隆。相反改变了就是深克隆。深克隆方式1:很容易理解的方法,就是在克隆...原创 2020-05-03 17:28:26 · 262 阅读 · 0 评论 -
设计模式------原型模式
原型模式:原型模式,创建属性相同的对象,但是属于不同对象。通过实现Cloneable。重写clone方法。package prototype;public class Prototype implements Cloneable{ private String name; private int age; public Prototype(String nam...原创 2020-05-03 16:10:16 · 84 阅读 · 0 评论 -
让人看到不知所措的三种工厂模式
简单工厂1,将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。2,在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何源代码。3,简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修...原创 2020-05-03 15:03:33 · 121 阅读 · 0 评论 -
一篇博客领略八种单例模式
单例模式的八种形式饿汉式----静态变量 √ private Single() { } private final static Single instance=new Single(); public static Single getInstance(){ return instance; }饿汉式----静态代码块 ...原创 2020-05-02 22:13:01 · 93 阅读 · 0 评论