设计模式
黄开A
这个作者很懒,什么都没留下…
展开
-
java23种设计模式汇总
java23种设计模式汇总设计模式概念和七大原则设计模式概念和七大原则工厂模式java设计模式-工厂模式之抽象工厂模式java设计模式-工厂模式之工厂方法模式java设计模式-工厂模式之简单工厂模式其他java设计模式-组合模式java设计模式-观察者模式java设计模式-装饰器模式java设计模式-迭代器模式java设计模式-适配器模式java设计模式-命令模式java设计模式-外观模式java设计模式-MVC模式java设计模式-生成器模式java设计模式-桥接模式j原创 2020-09-17 23:44:33 · 161 阅读 · 0 评论 -
设计模式概念和七大原则
设计模式概念和七大原则转载 设计模式概念和七大原则什么是设计模式在GoF(Gang of Four)的书籍《Design Patterns - Elements of Reusable Object-Oriented Software(设计模式-可复用面向对象软件的基础)》中是这样定义设计模式的:Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动” [AIS+77,第10页转载 2020-09-17 00:01:41 · 178 阅读 · 0 评论 -
java设计模式-工厂模式之工厂方法模式
工厂方法模式工厂方法模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。设计原则:1.依赖抽象,不要依赖具体类。(依赖倒置,减少具体类的依赖)工厂方法模式-定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。设计背景汽车工厂进行汽车生产时,汽车的“制造步骤”都是一原创 2020-09-17 00:02:19 · 121 阅读 · 0 评论 -
java设计模式-工厂模式之抽象工厂模式
抽象工厂模式抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。设计原则:1.依赖抽象,不要依赖具体类。(依赖倒置,减少具体类的依赖)抽象工厂模式-提供一个接口,用于创建相关或依赖对象的家族(也就是一组相关的对象),而不需要明确制定具体类。设计背景汽车工厂进行汽车生产时,汽车的“制造步骤”都是一致的。但唯独具体的车型是不同的。制造步骤:根据类型生产汽车获得汽车原创 2020-09-17 00:02:29 · 162 阅读 · 0 评论 -
java设计模式-工厂模式之简单工厂模式
简单工厂模式简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式(同属于创建型模式的还有工厂方法模式,抽象工厂模式,单例模式,建造者模式)。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式-专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。设计背景银行的储蓄卡有很多种联名卡,很原创 2020-09-16 01:06:54 · 239 阅读 · 0 评论 -
java设计模式-组合模式
组合模式组合模式(Composite pattern)是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。在使用组合模式中需要注意一点也是组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。组合模式-允许你将对象组成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的方式处理个别对象和对象组合设计背景计算机的文件系统,文件系统由文件和目录组成,目录下面也可以包含文件或者目录,计算机的文原创 2020-09-16 01:05:02 · 166 阅读 · 0 评论 -
java设计模式-观察者模式
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。设计原则:为了交互对象之间的松耦合设计而努力。观察者模式-在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新设计背景报社的业务就是出版报纸,向某一家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸。只要你不想再看报纸的时候,取消订阅,他们就不会再送原创 2020-09-16 01:02:37 · 117 阅读 · 0 评论 -
java设计模式-装饰器模式
装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。设计原则: 对扩展开放,对修改关闭(开闭原则)装饰者模式-动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择设计背景手机卡有很多附加业务,比如说彩铃业务、来电显示、加量流量包10G、加量流量包20G、加量通话分原创 2020-09-16 01:00:52 · 107 阅读 · 0 评论 -
java设计模式-迭代器模式
迭代器模式迭代器模式(Iterator Pattern)是Java编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。设计原则:类应该只有一个引起改变的理由,尽量让每个类保持单一职责迭代器模式-提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。模式结构和定义我们将创建一个叙述导航方法的 Iterator 接口和一个返回迭代器的 Container 接口。实现了 Container 接口的实体类将负责实现 It原创 2020-09-16 00:56:11 · 106 阅读 · 0 评论 -
java设计模式-适配器模式
适配器模式适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。适配器模式-将一个类的接口,转换成客户期望的另一种接口。适配器让原本接口不兼容的类可以合作无间。设计背景中国标准插头(三扁),中国香港使用英原创 2020-09-16 00:54:53 · 215 阅读 · 0 评论 -
java设计模式-命令模式
命令模式命令模式(个人感觉使用场景较少)命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式-将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作设计背景我们首先创建作为命令的接口 Order,然后创建作为请求的 Stock 类。实体命令类 BuyStock 和 SellSto原创 2020-09-16 00:53:04 · 82 阅读 · 0 评论 -
java设计模式-外观模式
外观模式外观模式(Facade Pattern)隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个能够统一访问的高层接口,这个接口使得子系统更容易被访问或者使用。设计原则:最少知识原则:只和你的密友谈话外观模式-提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。外观将客户从一个复杂的子系统中解耦。实现一个外观,需要将子原创 2020-09-16 00:51:42 · 73 阅读 · 0 评论 -
java设计模式-MVC模式
MVC模式模型-视图-控制器,MVC设计模式的目的是将数据模型和视图分离开来,并以控制器作为连接两者的桥梁以实现解耦。属于架构模式。这种模式用于应用程序的分层开发。Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。View(视图) - 视图代表模型包含的数据的可视化。Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开设计背景我们将创建一个作为模型的原创 2020-09-16 00:46:39 · 699 阅读 · 0 评论 -
java设计模式-生成器模式
生成器模式生成器模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。生成器模式-封装一个产品的构造过程,并允许按步骤构造模式和结构定义应用实例举个例子,我们如果构建生成一台电脑,那么我们可能需要这么几个步骤需要一个主机需要一个显示器需要一个键盘需要一个鼠标需要音响等虽然我们具体在构建一台主机的时候,每个对象的实际步骤是不一样的,比如,有的对象构建了i7cpu的主机,有的对象构建了i5c原创 2020-09-16 00:46:18 · 152 阅读 · 0 评论 -
java设计模式-桥接模式
桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响桥接模式-不只改变你的实现,也改变你的抽象(把抽象化与实现化解耦,使得二者可以独立变化)模式和结构定义抽象角色(Abstraction): 抽象的定义,并保存一个Implementor对象的引用。扩展抽象角色(Refin原创 2020-09-15 01:06:33 · 196 阅读 · 0 评论 -
java设计模式-代理模式
代理模式转载:Java三种代理模式:静态代理、动态代理和cglib代理https://segmentfault.com/a/1190000011291179在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。代理模式提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能代理模式-为另一个对象提供一个替身或占位符以访问一个对象举个例子我们生活中经常到火车站去买转载 2020-09-15 01:03:48 · 190 阅读 · 0 评论 -
java设计模式-解释器模式
解释器模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。为了解释一种语言,而为语言创建的解释器模式和结构定义抽象解释器(AbstractExpression/Expression):声明一个所有具体表达式都要实现的抽象接口(或者抽象原创 2020-09-15 01:01:00 · 89 阅读 · 0 评论 -
java设计模式-中介者模式
中介者模式中介者模式-定义一个封装一组对象如何交互的对象通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互。类型行为型模式和结构定义中介者模式角色介绍抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色。抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对原创 2020-09-15 00:58:56 · 111 阅读 · 0 评论 -
java设计模式-访问者模式
访问者模式访问者模式-封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。(Visitor Pattern),行为型。访问者模式-是一个相对比较简单,但结构又稍显复杂的模式,它讲的是表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。模式和结构定义Visitor是抽象访问者,为该对象结构中ConcreteElement的每一个类声明一个Visit操作;ConcreteVisitor是具体访问原创 2020-09-15 00:57:00 · 139 阅读 · 0 评论 -
java设计模式-原型模式
原型模式原型模式-当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式(Prototype Pattern)不需要知道任何创建的细节,不调用构造函数。类型:创建型模式和结构定义原型是用来生成实例的,但不是利用类来生成实例,而是通过实例来生成实例。为什么我们需要用过类来生成实例呢?联想到浏览器中,如果我们生成了一个button实例,这个button实例经过一系列操作,携带了各种信息,比如button加颜色,加背景图,加文字,加事件等等。如果我们这时候需要和这个button实例完全一样的一个实例,原创 2020-09-15 00:55:05 · 95 阅读 · 0 评论 -
java设计模式-备忘录模式
备忘录模式备忘录模式-在不破坏封装的条件下,通过备忘录对象(Memento)存储另外一个对象内部状态的快照,在将来合适的时候把这个对象还原到存储起来的状态。类型:行为型模式和结构定义Originator:发起者,负责创建一个备忘录,并且可以记录、恢复自身的内部状态。可以根据需要决定Memento保存自身的那些内部状态Memento:备忘录,用于存储Originator的状态,防止Originator以外的的对象访问MementoCaretaker:备忘录管理者,负责存储备忘录,不能对备忘录的内原创 2020-09-15 00:47:53 · 140 阅读 · 0 评论 -
java设计模式-责任链模式
责任链模式责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。责任链模式-当你想要让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式(Chain of Responsibility Pattern)模式和结构定义原创 2020-09-15 00:43:12 · 112 阅读 · 0 评论 -
java设计模式-享元模式
转载:Java设计模式(十二)----享元模式享元模式享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式。如想让某个类的一个实例能用来提供许多“虚拟实例”,就使用享元模式(Flyweight Pattern)概念Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。.转载 2020-09-15 00:37:39 · 253 阅读 · 0 评论 -
java设计模式-策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。设计原则:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。针对接口编程,而不是针对实现编程。多用组合,少用继承。总结:将变化之处独立出来,变化之处采用接口,非变化处采用继承实现代码复用,父原创 2020-09-15 00:30:26 · 238 阅读 · 0 评论 -
java设计模式-模板方法模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。设计原则:别找我,我会找你。由超类主控一切,当它们需要的时候,自然会去调用子类模板方法模式-在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。设计背景一套毛坯的房子装修原创 2020-09-14 23:57:40 · 101 阅读 · 0 评论 -
java设计模式-单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式-确保一个类只有一个示例,并提供全局访问。模式结构和定义应用实例1.懒汉式,线程不安全是否 Lazy 初始化:是是否多线程安全:否实现难度:易描述:这种方式是最基本的实现方式,原创 2020-08-09 23:20:21 · 111 阅读 · 0 评论 -
java设计模式-状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。状态模式-允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类设计背景举个订单的例子,订单新建之后,需要对订单进行一个自动处理。订单状态的变化,下单、待支付、支付、发货、待收货、收货、订单结束等等。下单状态完成:订单状态=待支付待支付状态完成:订单状态=支付支付状态完成:订单状原创 2020-08-04 21:23:34 · 332 阅读 · 0 评论