java设计模式
java设计模式
一笑而过者也
爱好java,分布式开发
展开
-
java设计模式一之简单工厂设计模式
前言:简单工厂设计模式用来专门创建其他类的实例,这些类具有共同的特点。怎么设计:1、需要实体类:要被创建的类2、被创建的类的共同父类:多态的体现,负责所有实例的公共接口,在工厂类中接受实体对象3、工厂类:创建实体类代码:1、公共的父类,水果类package com.xhx.designpattern;public interface Fruit { /** * 水果 ...原创 2018-06-04 11:16:37 · 236 阅读 · 0 评论 -
java设计模式六之装饰者设计模式
装饰者设计模式主要功能在于动态的给类添加行为,和继承不一样的就是继承是死的,功能扩展出来就不能变了,除非继续改继承后的子类,这样会造成类特别多或者总是修改子类。而装饰者设计模式可以把每种行为定义成一个类,装饰类和被装饰的类都有共同的超类,这也算体现了多态吧。装饰者设计模式的继承,继承类型,扩展行为,而不是继承的行为。方法全部交给超类调用,实际执行的是子类的方法,而装饰者的构造方法参数时超类,而原创 2017-09-05 15:14:31 · 308 阅读 · 0 评论 -
java设计模式二之工厂方法设计模式
前言:工厂方法模式也属于类的创建模式,也被称为多态工厂模式,它与简单工厂模式的不同是,工厂定义为抽象的,工厂的每个子类负责创建具体的实体类。这样的好处是,增加新的实体,只需要增加相应的工厂就可以了,不需要修改原工厂代码。怎么实现:1、需要实体类:要被创建的类2、被创建的类的共同父类:多态的体现,负责所有实例的公共接口,在工厂类中接受实体对象3、抽象工厂类:所有工厂类的父类4、工厂类:创建实体类,继...原创 2018-06-04 13:22:58 · 145 阅读 · 0 评论 -
java设计模式三之抽象工厂设计模式
前言: 抽象工厂设计模式是用来创建一个产品族的,简单工厂和工厂方法设计模式是用来创建一个具体产品的。怎么实现: 抽象工厂:工厂的父类,包含对多个产品的生明 具体工厂:抽象工厂的实现,负责创建产品族中的多个产品对象 实体父类:被创建对象的父类,负责描述所有实例的公共接口 具体实体:要被创建的具体的对象代码: 水果类父类:package com.xhx.des...原创 2018-06-04 13:51:51 · 206 阅读 · 0 评论 -
java设计模式四之单例设计模式
前言: 单例设计模式是一种创建对象的模式,保证这个类只有一个实例对象为什么要使用单例? 1、减少对象内存占用 2、共享资源 3、减少对象创建时间,提高性能三种模式:饿汉式懒汉式双重验证代码: 饿汉式:package com.xhx.designpattern;import java.util.Objects;public class Person { private ...原创 2018-06-04 17:37:32 · 146 阅读 · 0 评论 -
java设计模式七之原型设计模式
前言: 原型设计模式是指:用原来的对象,创建一个同类型的新对象实例。两个概念: 浅拷贝:非引用对象复制值,引用对象复制引用 深拷贝:复制非引用对象的值,非引用对象创建新实例,并且复制原来的值。实现: 实现Cloneable接口:在java虚拟机中,只有实现了此接口的类,才可以使用clone()方法,否则会抛出CloneNotSupportedException异常。 重写c...原创 2018-06-05 21:42:17 · 177 阅读 · 0 评论 -
java设计模式五之Builder建造者设计模式
前言: Builder建造者设计模式,用来隐藏复合对象的创建过程,把复合对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 我感觉比较明显的一个优点是:把对象创建和业务代码分离,代码清晰易懂,便于代码的维护,不用把复杂的对象创建过程融合到业务逻辑代码中。怎么实现? 1.有一个复合的对象,称之为product,最终要创建的产品。 2.抽象建造者...原创 2018-06-10 13:30:42 · 208 阅读 · 0 评论 -
java设计模式八之策略模式
前言: Strategy模式也叫策略模式,是行为模式之一,它对一系列算法加以封装,并且算法可以相互切换,让算法独立于使用它的客户而独立变化,首先为所有算法定义一个抽象的算法接口,每种算法都继承这个接口,并加以封装和实现,具体算法交由客户端决定。使用场景: 1.同一个问题有多种处理方式,只有行为不同。 2.用很多if .. else if...来判断一个抽象类的子类的执行怎...原创 2018-06-18 20:11:22 · 245 阅读 · 0 评论 -
java设计模式九之观察者设计模式(一)
前言: 观察者设计模式属于行为模式之一,当一个对象改变的时候,需要通知其他关联的对象,通俗的说就是当一个对象改变的时候,也需要改变其他业务内容,为了达到解耦、利于维护的目的。怎么实现: 被观察者父类:里面包含添加、删除、通知观察者的方法的声明或者具体方法 被观察者实现类:含有自己的业务逻辑,当发生改变时,向所有观察者发送通知。 观察者父类:含有被观察者调用的回调函数 ...原创 2018-06-19 00:05:28 · 169 阅读 · 0 评论 -
java设计模式九之观察者设计模式(二)
前言: 在上一篇中,我们是用的java.util包下的观察者与被观察者父类。这次我们自己写一个代码: 被观察者父类Observable,有一个添加观察者的集合,添加观察者的方法,删除观察者的方法,通知观察者的方法。package com.xhx.designpattern.entity;import com.xhx.designpattern.observer.Observer;...原创 2018-06-20 08:07:51 · 144 阅读 · 0 评论 -
java设计模式十之享元模式
前言: 享元设计模式也叫轻量级模式,是把对象不变化的部分抽取出来形成一个对象,避免这个对象修改。享元的目的是为了减少不必要的内存消耗,通过共享技术,有效的实现了大量细粒度对象的复用。内部状态:存储在享元对象内部,一般在构造对象时设置,不会随环境变化而改变,因此内部状态可以复用。外部状态:随环境改变而改变,是不可以共享的状态,所以外部状态需要在使用时由客户端传入(会造成线程安全问题)怎么实现:...原创 2018-06-22 07:49:08 · 160 阅读 · 0 评论 -
java设计模式十一之代理模式
前言: 代理模式可以对原来的类进行扩展,通过代理对象来访问目标对象。例如spring aop怎么实现: 抽象角色:真实对象与代理对象都需要实现的接口 真实角色:继承抽象角色,要被代理的类 代理类:扩展真实角色。静态代理: package com.xhx.designpattern;/** * 抽象角色 * 真实对象与代理对象都需要实现的接口 */pu...原创 2018-06-23 17:21:40 · 202 阅读 · 0 评论 -
java设计模式十二之外观模式
前言: 外观模式,也叫Facade模式,当外部客户端与子系统通信时,通过外观对象进行通信。外观对象提供了调用子系统的各种接口。一般可以把外观对象设置成单例的。优点: 降低调用者与子系统的耦合,隐藏了子系统的实现细节,同时更利于维护怎么实现: Facede外观对象:对子系统进行封装调用 子系统对象:可能存在多个 调用者:客户端调用者代码: 子系统A:package...原创 2018-06-30 12:41:29 · 136 阅读 · 0 评论 -
java设计模式十三之组合设计模式
前言: 组合设计模式也叫Composite模式,是构造型的设计模式之一,用来表示整组对象的树形结构,其实就是把数据整合成树形结构。怎么实现: 1.抽象根节点,树形结构节点的抽象 2.具体叶子节点 3.具体枝节点代码: 枝和叶子的抽象父类:package com.xhx.designpattern;import java.util.List;/...原创 2018-07-06 10:29:34 · 170 阅读 · 0 评论