Java设计模式
文章平均质量分 55
java设计模式,23种设计模式
Eric010101
这个作者很懒,什么都没留下…
展开
-
Java设计模式-单例模式
单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。单例模式分为两种:懒汉式(实例延迟加载模式)和饿汉式/** * 单线程环境下的饿汉式单例模式 * @author ywq * * */ class Single{ private static final Single s = new Single(); ...原创 2018-07-16 10:59:04 · 128 阅读 · 0 评论 -
Java设计模式-工厂方法模式
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。抽象产品类:public abstract class Product { //产品类的公...原创 2018-07-16 11:50:35 · 172 阅读 · 0 评论 -
Java设计模式-抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。类图:public class ProductA1 extends AbstractProductA { public void doSomething() { System.out.println("产品A1的实现方法"); } }在有多个业务品种、业务分类时,通过抽象工厂模...原创 2018-07-16 14:20:27 · 139 阅读 · 0 评论 -
Java设计模式-模板方法模式
定义:一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。类图:Abstract Class叫做抽象模板,它的方法分为两类:模板方法和基本方法。基本方法:基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法中被调用。模板方法:可以有一个或者几个,一般是具体的方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑。Concret...原创 2018-07-16 14:46:27 · 132 阅读 · 0 评论 -
Java设计模式-建造者模式
定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。建造者模式表示是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。类图:如下角色:Product产品类 通常是实现了模板方法模式,也就是有模板方法和基本方法。Builder抽象建造者 规范产品的组建,一般是由子类实现。ConcreteBuilde...原创 2018-07-16 16:47:36 · 117 阅读 · 0 评论 -
Java设计模式-代理模式
代理模式(Proxy Pattern)也叫做委托模式 定义: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式将原类进行封装,客户端不能直接找到原类,必须通过代理角色。即代理是原类的一个替身,客户端要找原类,统统找代理就可以搞定。明星和经纪人就是一种代理模式。 类图: 角色定义: Subject 抽象主题角色 抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无...原创 2018-07-16 17:31:33 · 131 阅读 · 0 评论 -
Java设计模式-原型模式
定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式实现了对Java中某个对象的克隆功能,即该对象的类必须implements实现Cloneable接口来标识为可被克隆,然后需要覆写Object类的clone( )方法。简单点说就是:实现一个接口重写一个方法就可以实现原型模式。 类图: 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,Java...原创 2018-07-17 14:06:28 · 124 阅读 · 0 评论 -
Java设计模式-中介者模式
定义: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 类图: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。 中介者实现类:从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影响其他同时类。 ...原创 2018-07-17 14:25:27 · 134 阅读 · 0 评论 -
Java设计模式-命令模式
定义: 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 类图: Receive接收者角色:该角色就是干活的角色,命令传递到这里是应该被执行的。 Command命令角色:需要执行的所有命令都在这里声明。 Invoker调用者角色:接收到命令,并执行命令。 代码: //通用Receiver类 public ...原创 2018-07-17 14:39:50 · 136 阅读 · 0 评论 -
Java设计模式-责任链模式
定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果。 类图: 代码: public class Test4{ public static void main(String[] arg...原创 2018-07-17 15:36:55 · 108 阅读 · 0 评论 -
Java设计模式-装饰模式
定义: 动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更加灵活。 类图: 抽象构件(Component):是一个接口或者是抽象类,就是定义我们最核心的对象,也就是原始的对象。 具体构件(ConcreteComponent):是最核心,最原始,最基本的接口或者抽象类的实现,你要装饰的就是它。 装饰角色(Docorator):一般是一个抽象类,做什么用呢?实现接口...原创 2018-07-17 15:41:45 · 109 阅读 · 0 评论 -
Java设计模式-策略模式
定义: 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 类图: Context 封装角色:它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 Strategy 抽象策略角色:策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。 Concrete Strategy 具体策略角色:实现抽象策略中的操作,该...原创 2018-07-17 16:18:06 · 124 阅读 · 0 评论 -
Java设计模式-适配器模式
定义: 首先有一个目标角色、一个源角色还有一个适配器角色。我们要做的就是利用适配器角色将源角色转换为目标角色。而目标角色是一个正在良好运行的一个角色。 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 转换方法: (1) 适配器类继承extends原角色——类适配器 (2) 适配器类和原角色类进行关联,即通过适配器类的构造函...原创 2018-07-17 16:31:26 · 105 阅读 · 0 评论 -
Java设计模式-解释器模式
解释器模式在实际的系统开发中使用得非常少,因为它会引起效率、性能以及维护等问题,一般在大中型的框架型项目能够找到它的身影,如一些数据分析工具、报表设计工具、科学计算工具等,若你确实遇到“一种特定类型的问题发生的频率足够高”的情况,准备使用解释器模式时,可以考虑一下Expression4J、MESP(Math Expression String Parser)、Jep等开源的解析工具包功能都异...原创 2018-07-17 16:52:32 · 634 阅读 · 0 评论 -
Java设计模式-迭代器模式
定义: 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示 类图: (1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(), (2)具体迭代器角色(Concrete Iterator):...原创 2018-07-17 16:55:55 · 172 阅读 · 0 评论 -
Java设计模式-组合模式
定义: 部分-整体模式,主要是用来描述部分与整体的关系。将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 类图: 组合模式的包含角色:● Component 抽象构件角色 定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性。 ● Leaf 叶子构件 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位。● Composit...原创 2018-07-18 09:41:24 · 130 阅读 · 0 评论 -
Java设计模式-观察者模式
定义: 发布订阅模式(Publish/subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。这是一种1对多的依赖,首先得有一个被观察者,当被观察者的状态发生变化时,可以自动通知notify观察者,所以叫做观察者模式。 类图: 包含角色: ● Subject 被观察者 定义被观察者必须实现的职责,它必须能够动态地增...原创 2018-07-18 09:41:40 · 121 阅读 · 0 评论 -
Java设计模式-门面模式
定义: 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 类图: Facade门面角色 客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去,也就说该角色没有实际的业务逻辑,只是一个委托类。 subsystem 子系统角色可以同时有一个或者多个子...原创 2018-07-18 09:41:53 · 110 阅读 · 0 评论 -
Java设计模式-备忘录模式
定义: 备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类图: 角色说明: ● Originator 发起人角色 记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。● Memento 备忘录角色 负责存储Originat...原创 2018-07-18 09:42:03 · 249 阅读 · 0 评论 -
Java设计模式-桥梁模式
定义: 桥梁模式也叫做桥接模式,将抽象和实现解耦,使得两者可以独立地变化。桥梁模式是为了解决类继承的缺点而设计的。一个类想拥有另一个类的方法,可以不继承,只需要铺设一个桥梁架过去就可以了。 类图: ● Abstraction——抽象化角色 它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。 ● Implementor——实现化角色 它是接口或者抽象类...原创 2018-07-18 10:43:25 · 169 阅读 · 0 评论 -
23种设计模式汇总整理
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 ...原创 2018-07-18 11:49:48 · 142 阅读 · 0 评论 -
Java设计模式-状态模式
定义: 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式就是状态的改变引起了行为的改变,但是,我们只能看到行为的改变,看不到状态的改变。 类图: ● State——抽象状态角色 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。● Concrete State——具体状态角色 每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通...原创 2018-07-18 12:05:50 · 115 阅读 · 0 评论 -
Java设计模式-享元模式
定义: 是池技术的重要实现方式。使用共享对象可有效地支持大量的细粒度的对象。 享元模式利用共享对象的技术,解决了Java中内存溢出的问题。 类图: 角色: ● Flyweight——抽象享元角色 它简单地说就是一个产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现。● Concrete Flyweight——具体享元角色 具体的一个产品类,实现抽象角色定义的业务。该角色中需...原创 2018-07-19 11:17:51 · 211 阅读 · 0 评论