设计模式
java 设计模式23种
De_you123
期待菜鸟变老鸟的一天
展开
-
访问者模式(Visitor Pattern)
访问者模式在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。优点:符合单一职责原则。秀的扩展性。灵活性。缺点:具体元素对访问者公布细节,违反了迪米特原则。具体元素...原创 2019-10-21 14:53:09 · 207 阅读 · 0 评论 -
桥接(Bridge Pattern)
桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。UML Class Diagrampackage brid...原创 2019-10-21 12:48:21 · 335 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。应用实例:算术表达...原创 2019-10-19 21:26:59 · 236 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。应用实例:红楼梦中的"击鼓传花"。JS 中的事件冒...原创 2019-10-19 21:15:39 · 283 阅读 · 0 评论 -
原型模式(Prototype Pattern)
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据...原创 2019-10-17 16:46:37 · 156 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。应用实例:中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。机场调度系统。MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。优...原创 2019-10-17 15:25:43 · 190 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族...原创 2019-10-15 16:48:34 · 153 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式应用实例:JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。数据库的数据池。优点:大大减少对象的创建,降低系统的内存,使效率提高。缺点:提高了系统的...原创 2019-10-12 21:42:40 · 154 阅读 · 0 评论 -
建造者模式(Builder Pattern)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。应用实例: 1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。 2、JAVA 中的 StringBui...原创 2019-10-12 19:01:12 · 160 阅读 · 0 评论 -
工厂方法模式
工厂方法模式例子问题:用户希望自己的圆柱笔使用不同颜色的笔芯抽象产品public abstract class PenCore { String color; public abstract void writeWord(String s);}具体产品红色笔芯public class RedPenCore extends PenCore{ RedPenCor...原创 2019-04-08 11:07:42 · 285 阅读 · 0 评论 -
适配器模式
适配器模式实例问题: 家里有一台洗衣机,使用交流电,现在用户新买了一台收音机,录音机只能用直流电。由于供电系统给家里的只是交流电,因此用户需要适配器将交流电转化为直流电。目标public interface DircetCurrent { public String giveDirectCurrent();}被适配者public interface Alternate...原创 2019-04-08 10:58:00 · 197 阅读 · 0 评论 -
装饰模式
装饰模式实例给麻雀安装智能电子翅膀抽象组件//抽象组件public abstract class Bird{ public abstract int fly();}具体组件//具体组件public class Sparrow extends Bird{ public final int DISTANCE=100; public int fly(){...原创 2019-04-08 10:47:21 · 168 阅读 · 0 评论 -
访问者模式
抽象访问者public interface Visitor { public double visit(AmmeterElement element);}抽象元素public abstract class AmmeterElement { public abstract void accept(Visitor v); public abstract double showElect...原创 2019-04-08 10:38:00 · 235 阅读 · 0 评论 -
策略模式
策略模式实例在多个裁判负责打分的比赛中,每位裁判给选手一个得分,选手的最后得分根据所有的裁判的分计算出来。请给出几种选手得分评分方案(策略),对于某次比赛,可以从你的方案中选择一种方案做为本次比赛的评分方案。策略接口public interface Strategy { public double computerAverage(double[] a);}上下文public cl...原创 2019-04-08 10:30:06 · 289 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。UML Class DiagramCodepackage command.pattern;/** * Created by DELL * Date: 2019/10/...原创 2019-10-09 09:07:58 · 180 阅读 · 0 评论 -
单例模式(Singleton Pattern)
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。UML Class DiagramJava Codepackage singleton.pattern;/** * Created by DELL * Date: 2019/9/28. * Time: 13:24 */c...原创 2019-09-28 14:07:54 · 96 阅读 · 1 评论 -
Java设计模式
根据JAVA Design Patterns 一书写的博客。目录A : 创建型模式Singleton PatternAbstract Factory PatternPrototype PatternFactory PatternBuilder FactoryB:建造者模式Proxy PatternFlyweight PatternBridge PatternFacade P...原创 2019-09-28 14:25:21 · 85 阅读 · 0 评论 -
代理模式(Proxy Pattern)
一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。UML Class DiagramImplementationpackage OriginalClasses;/** * Created by DELL * Date: 2019/9/28. * Time: 14:33 */public abstra...原创 2019-09-28 14:49:24 · 167 阅读 · 0 评论 -
装饰器模式(Decorator Pattern)
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。UML Class Diagram实现代码package decorator.pattern.demo;/** * Crea...原创 2019-09-28 15:17:54 · 157 阅读 · 0 评论 -
观察者模式(Observer Pattern)
观察者模式一package main.observer.pattern.demo;import java.util.ArrayList;import java.util.List;/** * Created by DELL * Date: 2019/9/27. * Time: 8:22 */class Observer { public void update()...原创 2019-09-27 15:45:08 · 149 阅读 · 0 评论 -
模板模式(Template Method Pattern)
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。UML Class Diagram实现代码package engineering.papers;/** * Created by DELL * Date: 2019/9/28. * Ti...原创 2019-09-28 15:50:24 · 359 阅读 · 0 评论 -
策略模式(Strategy Pattern)
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。UML Class Diagram具体代码package choices;/** * Created by DELL...原创 2019-09-29 14:55:31 · 128 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。ExamapleUML Class DiagramJavaCodepackage adpter.pattern.demo;/** * Created by DELL * Da...原创 2019-09-29 16:33:38 · 295 阅读 · 0 评论 -
状态模式(State Pattern)
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。优点:封装了转换规则。枚举可能的状态,在枚举状态之前需要确定状态种类。将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。允许...原创 2019-10-11 10:28:26 · 161 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。应用实例:后悔药。打游戏时的存档。Windows 里的 ctri + z。IE 中的后退。数据库的事务管理。优点:给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。实现了信息的封装,使得用户不需要关心状态的保存细节。缺点:...原创 2019-10-10 15:45:33 · 171 阅读 · 0 评论 -
工厂模式(Factory Method Pattern)
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。、优点:一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。屏蔽产品的具体实现,调用...原创 2019-10-10 13:56:33 · 150 阅读 · 0 评论 -
外观模式(Facade Pattern)
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。UML Class Diagrampackage robotparts;/** * Created by DEL...原创 2019-10-09 16:42:45 · 143 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。UML Class Diagram...原创 2019-10-09 16:03:07 · 252 阅读 · 0 评论