![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java设计模式巴拉巴拉说
文章平均质量分 89
java设计模式大扫盲
IT学习小镇
Java领域从业者;CSDN新兴创新博主;Java领域优质创作者;
展开
-
一文让你深刻了解Java设计模式之代理模式
点击上方“蓝字”关注我们一、概述给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添...原创 2022-09-28 11:55:40 · 191 阅读 · 0 评论 -
Java设计模式之模板方法模式简要总结
一、概述定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。举个例子,请客吃饭包含(点单-吃东西-买单),点单跟买单固定不变,吃东西可以吃面条也可以吃汉堡。此时,将点单跟买单的代码放在父类中,对于吃东西只进行声明,而不进行实现,将其具体实现放在不同的子类上。二、结构与实现结构(1)AbstractClass:定义了一系列的基本操作,可以是具体也可以是抽象的,每一个基本操作对应算法的一个步骤。抽象类中实现了一原创 2020-12-17 18:20:50 · 132 阅读 · 0 评论 -
Java设计模式之策略模式的总结
一、概述涉及多种算法,传统常用的方法是按硬编码,即将所有算法集中在一个类中,提供多个方法,每一个方法对应一个具体的算法;或者将算法封装在统一方法中,再通过if…else进行选择。对于维护代码及其不友好。策略模式用于算法的自由切换与扩展。定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换,同时让算法可以独立于使用它的客户而变化。简而言之,策略模式就是定义一些独立的类来封装不同的算法,并提供一个这些算法的抽象类来让使用时具有一致性。二、结构与实现结构(1)AbstractStr原创 2020-12-16 16:07:32 · 140 阅读 · 0 评论 -
Java设计模式之迭代器模式(内部类实现迭代器,Java内置迭代器)
一、概述(1)提供一种方法顺序访问一个聚合对象中的各个元素,而又不要暴露该对象的内部表示。(2)聚合对象拥有两个职责,一是存储数据,二是遍历数据,而迭代器模式,主要是将数据的遍历功能从聚合对象中分离出来,聚合对象负责存储数据,迭代器负责遍历数据,这样更符合单一职责的原则。二、结构与实现结构:结构中包含聚合和迭代器两个层次结构,考虑到灵活性和扩展性,在迭代器模式中应用了工厂方法模式。(1)Iterator(抽象迭代器):它定义访问和遍历元素的接口,声明了用于遍历数据元素的方法。比原创 2020-12-16 01:02:52 · 574 阅读 · 1 评论 -
Java设计模式之命令模式(实现命令队列、记录请求日志、实现撤销操作)
一、概述将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤回的操作。它将发送者与接收者解耦,发送者通过命令对象来间接引入接收者,使得系统具有更好的灵活性。二、结构与实现Invoker(调用者):通过命令对象来执行请求,与抽象命令类之间存在关联关系,运行时再将一个具体命令类注入其中,再具体调用命令对象的execute()方法,从而实现间接调用请求接收者的相关操作。Command(抽象命令类):声明了用于执行请求的exec原创 2020-12-12 02:04:59 · 858 阅读 · 1 评论 -
Java设计模式之责任链模式(纯责任链和不纯责任链模式)
一、概述避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,知道有一个对象能够处理它为止。二、结构与实现结构(1)Handler(抽象处理者):定义了一个抽象请求处理的方法,一般设计为抽象类。因每一个处理者的下家还是一个处理者,所以在抽象处理者中定义了一个抽象处理者类型的对象作为其下家的引用,通过该引用处理者可以连成一条链。(2)ConcreteHandler(具体处理者):抽象处理者子类,可以处理用户请求原创 2020-12-09 15:53:40 · 440 阅读 · 0 评论 -
Java设计模式之代理模式(远程代理,虚拟代理,JDK动态代理,Cglib动态代理)
一、概述给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新的服务。二、结构与实现结构(1)Subject(抽象主题角色):声明了RealSubject和Proxy的共同接口,这样一来,在任何使用RealSubject的地方都可以使用Proxy。(2)Proxy(代理主题对象):包含对RealSubject的引用,从而可以在任何时候操作RealSubject原创 2020-12-09 00:53:25 · 235 阅读 · 0 评论 -
Java设计模式之享元模式(有外部状态的享元模式,单纯、复合享元模式,String类)
一、概述运用共享技术有效地支持大量细粒度对象的复用。在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同一个享元对象。在享元模式中存储这些共享实例对象的地方称为享元池,当需要的时候就将对象从享元池中取出,实现对象的复用。二、结构与实现结构:(1)Flyweight:抽象的享元角色。声明了具体享元类的公共方法,这些方法可以向外界提供对象的外部状态和设置对象的内部状态。内部状态:对象共享出来的信息,不会随环境的改变而改变。外部状态:对象得以依赖的一个标记,是原创 2020-12-07 23:33:15 · 462 阅读 · 2 评论 -
Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
一、概述引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口。简而言之,外观模式就是定义了一个高层接口,这个接口可以使得这一子系统更加容易使用。如果没有这个外观类,那么每个客户类需要和多个子系统之间进行复杂的交互,系统的耦合将很大,而当引入了外观类之后,客户类只需与外观类进行交互,客户类与子系统之间原有的复杂引用关系由外观类来实现,降低了系统的耦合度。外观模式又称为门面模式,是迪米特法则的一种具体实现。二、结构与实现结构(1)Facade类:客户原创 2020-12-03 23:33:24 · 643 阅读 · 0 评论 -
Java设计模式之装饰模式(透明装饰模式,半透明装饰模式)
一、概述动态地给一个对象增加一些额外的职责(方法)。就扩展功能而言,装饰者模式提供了一种比使用子类更加灵活的替代方案。装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。二、结构与实现结构(1)Component(抽象构件):是具体构件类和抽象装饰者类的共同父类。(2)ConcreteComponent(具体构件类):抽象构件的子类,装饰者类可以给它增加额外的职责。(3)Decorator(抽象原创 2020-12-02 19:54:11 · 1945 阅读 · 0 评论 -
Java设计模式之组合模式(透明组合模式,安全组合模式)
一、概述组合多个对象形成树形结构以表示具有部分-整体关系的层次结构,可以让客户端统一对待单个对象和组合对象。组合模式关注那些包含叶子构件和容器构件的结构以及它们的组织形式,在叶子构件中不包含成员变量,而容器构件中可以包含成员对象,这些对象通过递归组合可构成一个树形结构。二、结构与实现结构:(1)Component(抽象构件):可以是接口或抽象类,为叶子构件及容器构件提供共有行为的声明。抽象构件中定义了访问及管理它的子构件的方法,如:新增、删除、获取子构件。(2)Leaf(叶子构原创 2020-12-01 23:51:03 · 2892 阅读 · 2 评论 -
Java设计模式之桥接模式总结详述
一、概述将抽象部分与它的实现部分解耦,使得两者都能够独立变化。通俗地讲,就是将多层继承转化为两个横向维度。好比如:一个电脑下有苹果品牌,戴尔品牌,联想品牌,各个品牌下又有台式机或笔记本等等。对于这样的多层继承关系,使用抽象关联来取代再合适不过了(桥接)。二、结构与实现结构(1)Abstraction(抽象类):其中定义了一个Implementor类型的对象,并可以维护该对象。(2)RefinedAbstraction(扩充抽象类):定义(3)Implementor(实现类接口):(原创 2020-11-30 22:44:08 · 140 阅读 · 0 评论 -
Java设计模式之适配器模式(类适配器,对象适配器,缺省适配器,双向适配器等)
一、概述:适配器模式,结构型模式之一。(1)结构型模式:关注如何将现有类或对象组织在一起形成更强大的结构。结构型模式分为:类结构型模式和对象结构型模式。而适配器模式,既是类结构模式又是对象结构模式。(2)适配器模式:将一个类的接口转换成客户希望的另一个接口,让那些接口不兼容的类可以一起工作。二、结构与实现结构(1)Target(目标抽象类):目标抽象类定义客户所需的接口。(2)Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。在原创 2020-11-27 17:05:40 · 857 阅读 · 0 评论 -
Java设计模式之原型模式(浅克隆,深克隆)
一、原型模式:概述:创建型模式之一,它通过复制一个已有对象来获取更多相同或相似的对象,可提高对象创建效率,简化创建过程。原理:将一个原型对象传给要发动创建的对象(如客户端对象),这个客户端对象通过请求原型对象复制自己来实现创建过程。二、原型模式结构:三、深拷贝与浅拷贝:四、实现:五、应用案例:...原创 2020-11-25 22:58:56 · 434 阅读 · 0 评论 -
Java设计模式之单例模式(饿汉式,懒汉式,静态内部类实现,枚举实现)
单例模式1、概述:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一的实例。2、三要点:(1)某个类只能有一个实例(2)必须自行创建这个实例(3)必须自行向整个系统提供这个实例3、实现:public class Singleton(){ private static Singleton instance=null; //构造函数私有化,使外界要new该类时,只能通过方法去创建实例。 private Singleton(){ } //静态公有工厂方法,检验实例的存在性原创 2020-11-22 22:55:06 · 220 阅读 · 1 评论 -
Java设计模式之建造者(Builder)模式详细总结
一、概述:将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示。二、结构:1、Product(复杂的产品对象):一个复杂对象,包含多个成员变量。public class Product(){ private String PartA; private String PartB; private String PartC; //三个成员变量的setter()和getter()省略。}2、Builder(建造者):声明两类方法,一类负责创建复杂对象中的各个部件原创 2020-11-22 15:04:42 · 557 阅读 · 0 评论