![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
cainiao_23333
这个作者很懒,什么都没留下…
展开
-
中介者模式的Java实现
中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。介绍意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处原创 2020-09-10 11:32:59 · 292 阅读 · 0 评论 -
责任链模式的Java实现
package com.ly.chainOfResponsibility;/** * liyang 2020-09-08 * 封装请假信息 */public class LeaveRequestMessage { private String empName; private int leaveDays; private String reason; public LeaveRequestMessage() {} public LeaveReq...原创 2020-09-08 22:02:03 · 741 阅读 · 0 评论 -
模板方法模式的Java实现
模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,原创 2020-09-07 17:32:32 · 230 阅读 · 0 评论 -
观察者模式的Java实现
步骤1:创建抽象的观察者,声明update函数接口package com.ly.observer;/** * 抽象的观察者 * @author Young 2020-09-06 */public interface Observer { void update(Subject subject);}步骤:创建某一类具体的观察者package com.ly.observer;/** * 具体的某一类观察者 * @author Young 2020-09-0...原创 2020-09-07 21:15:17 · 623 阅读 · 0 评论 -
建造者模式的Java实现
package com.ly.builder;public interface SpaceCraftBuilder { OrbitalModule buildOrbitalModule(); Engine buildEngine(); EscapeTower buildEscapeTower();}package com.ly.builder;public interface SpaceCraftDirector { SpaceCraft directSpaceCraft();}.原创 2020-09-01 16:00:44 · 99 阅读 · 0 评论 -
组合模式的Java实现
组合模式composite 把部分和整体的关系用树形结构来表示,从而使客户端可以统一的方式处理部分对象和整体对象组合模式核心: 抽象构建角色(component):定义了叶子和容器构建的共同点 叶子构建角色(leaf):无子节点 容器构建角色(composite):有容器特征,可以包含子节点 注意:别将组合模式与继承中的组合混淆组合模式工作流程分析: 1、组合模式为处理树形结构提供了完美的解决方案,描述了如何将容器和叶子进行递归组合,使得用户在使用时...原创 2020-08-31 11:24:15 · 760 阅读 · 0 评论 -
策略模式的Java实现
package com.ly.strategy;/** * liyang 2020-08-27 * 策略接口 */public interface Strategy { public double getPrice(double originalPrice);}package com.ly.strategy;/** * liyang 2020-08-27 * 新客户少批量的价格策略 */public class NewCustomerFewStrat...原创 2020-08-28 11:12:55 · 492 阅读 · 0 评论 -
备忘录模式的Java实现
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。介绍意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔原创 2020-08-27 10:13:40 · 994 阅读 · 0 评论 -
迭代器模式的Java实现
迭代器模式简述迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示,内部可以是数组或者链表等。主要解决:不同的方式来遍历整个整合对象,实现迭代器接口的具有统一的遍历方式,而不用追究其本质。何时使用:遍历一个聚合对象。如何解决:把在元素之间游走的责任交给迭代原创 2020-08-21 15:07:46 · 439 阅读 · 0 评论 -
代理模式的Java实现
代理模式简述 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。核心作用:通过代理,控制对对象的访问。 可以详细控制某个对象(类)的方法,在调用这个方法前作前置处理,调用这个方法后作后置处理。(即:AOP的微观实现,AOP:Aspect Oriented Programming 面向切面编程的核心实现机制) 将统一的流程代码放到代理类中处理 核心角色:抽象角色定义代理角色和真实角色的公共对外方法 ...原创 2020-08-17 10:54:09 · 225 阅读 · 0 评论 -
享元模式的Java实现
享元模式简述: 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。场景:内存属于稀缺资源,不要随意浪费,如果有多个完全相同或相似的对象,我们可以通过享元模式,节省内存 核心:享元模式以共享的方式高效的支持大量细粒度对象的重用享元对象能做到共享的关键是区分了内部状态和外部状态内部状态:可以共享,不会随环境变化而改变 外部状态:不可以共享,会...原创 2020-08-15 18:37:39 · 520 阅读 · 0 评论 -
外观模式的Java实现
外观模式简述外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个统一的可以访问系统的接口。 这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 符合迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用。 又被称作门面模式。介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这..原创 2020-08-15 16:42:34 · 404 阅读 · 0 评论 -
适配器模式的Java实现
适配器模式简述适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作了。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,usb转type-c线将充电宝的usb接口转成type-c接口,从而实现对手机的充电。模式中的角色:目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 需要是配的原创 2020-08-14 21:49:08 · 316 阅读 · 0 评论 -
桥接模式的Java实现
桥接模式简述桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。 这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 以上比较官方的言论看的有点懵,通俗来讲就是将一个对象的多个维度进行拆分,使之满足SRP原则,然后使用桥接模式将多维度进行组合,使得新设计避免原设计的类个数膨胀问题。本文以电子产品为例说明桥接模式。...原创 2020-08-14 21:03:42 · 604 阅读 · 0 评论 -
抽象工厂模式的Java实现
package com.ly.factory.abstractfactory;public interface CarFactory { Engine createEngin(); Seat createSeat(); Tyre createTyre();}package com.ly.factory.abstractfactory;public interface Seat { void massage();}class LuxurySeat implemen...原创 2020-09-01 15:34:39 · 247 阅读 · 0 评论 -
工厂方法模式的Java实现
工厂方法模式简述 与简单工厂模式基本相同,只是工厂是一个抽象的,需要有具体的工厂去实现它,然后利用这个工厂生产产品,之所以出现这个模式是因为,简单工厂模式不符合OCP原则,添加新产品需要在已有的类中添加代码。而使用工厂方法模式,需要新产品的时候,需要创建两个类,具体产品类实现产品接口,具体工厂类实现工厂接口,满足OCP原则,但是每增加一个产品,需要增加两个类,会产生大量的类。创建步骤步骤1:创建一个产品的接口package com.ly.factory.factorymet...原创 2020-08-14 17:28:02 · 167 阅读 · 0 评论 -
简单工厂模式的Java实现
简述工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式的核心:实现了调用者和使用者的分离详细分类:本文只介绍简单工厂模式简单工厂模式:用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码) 工厂方法模式:用来生产统一登记结构中的...原创 2020-08-14 16:57:09 · 515 阅读 · 0 评论 -
单例模式的五种Java实现
单例模式介绍保证类全局只有一个实例,并且提供一个访问该实例的全局访问函数 因此需要将构造器私有化,防止外部new该类的对象 本文介绍五种单例模式并且使用Java语言实现饿汉式package com.ly.singleton;/** * 测试饿汉式单例 * liyang 2020-07-07 * 步骤:1、私有化构造器 * 2、初始化类就构造静态对象 * 3、提供静态对象的外部获取方法(静态) * * 优点:线程安全,因为类加载过程是天然线程安全的,因此原创 2020-08-14 16:10:32 · 174 阅读 · 0 评论 -
GOF23设计模式简述
设计模式的作用 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工...原创 2020-08-14 11:50:46 · 145 阅读 · 0 评论 -
单例模式
设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案, 设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度。 <<设计模式>> 是经典的书,作者是 E...原创 2019-10-07 17:26:28 · 128 阅读 · 0 评论