![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DesignPattern
设计模式
黄晶谛
GIS JAVA
展开
-
策略模式
一、介绍策略模式,Strategy Pattern,定义了一系列封装的算法族,他们之间可以相互替换,此模式使得算法的变化独立于使用算法的客户端。主要体现了以下几个设计原则:1)把变化的代码从不变的代码中分离出来;2)针对接口编程,定义了策略接口;3)多用组合或聚合,客户端通过组合的方式使用策略。类图设计如下:二、实现类图:1)策略接口/** * @Note {飞行行为接口} * @author giserDev * @Date 2020-06-20 18:05:53 */p原创 2020-06-20 18:39:06 · 214 阅读 · 0 评论 -
观察者模式
一、简介观察者模式是对象间多对一依赖的一种设计方案,被依赖的对象称为Subject,依赖的对象为Observer,Subject通知Observer发生的变化。相关设计类图如下:二、实现1)Subjectpackage com.giser.designpattern.observer;/** * @Note {接口} * @author giserDev * @Date 2020-06-07 19:59:52 */public interface Subject { void r原创 2020-06-07 20:38:37 · 138 阅读 · 0 评论 -
模板方法模式
一、简介1)模板方法模式,Template Method Pattern,又称为模板模式,Template Pattern,即在一个抽象类中公开定义了它的方法的模板。其子类可以按需重写方法实现。2)模板方法模式属于行为型模式。二、实现1)模板方法类package com.giser.designpattern.template;/** * @Note {模板方法模式} * @author giserDev * @Date 2020-06-05 21:52:51 */abstract原创 2020-06-05 23:03:32 · 141 阅读 · 0 评论 -
代理模式
一、简介代理模式,Proxy,通过代理对象访问目标对象,可以在目标对象的实现基础上,增强额外的功能,即扩展目标对象的功能。被代理的对象可以是远程对象、需要安全控制的对象或创建开销较大的对象。代理模式主要有三种,即静态代理、动态代理(JDK代理、接口代理)和Cblib代理(可以在内存中动态创建对象,不需要实现接口,属于动态代理范畴)。二、实现1)静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同接口或继承同一个父类。package com.giser.d原创 2020-06-02 22:46:21 · 127 阅读 · 0 评论 -
外观模式
一、简介外观模式,Facade,为子系统中的一组接口定义了一个更高层次的接口,提供了一个一致的界面,用于屏蔽内部子系统的细节,使得子系统更易于使用。其主要包括外观类、子系统的集合和调用者。外观类: 为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子系统对象;子系统的集合: 指模块或者子系统,处理Facade对象指派的任务,是功能的实际提供者;调用者: 外观接口的调用者。二、实现1)子系统模块package com.giser.designpatter原创 2020-05-25 23:03:11 · 90 阅读 · 0 评论 -
组合模式
一、简介组合模式,Composite Pattern ,又称为部分整体模式,表述了一种“整体-部分”的层次关系。其依据树形结构来组合对象,用来表示部分和整体,使得用户对单个对象和组合对象具有一致的访问处理方式。属于结构型模式。二、类图说明:1)Component: 组合中对象声明接口或抽象类,用于访问和管理Component子部件,实现所有类共有的接口默认行为。**2)Leaf: ** 在组合中表示叶子节点,叶子节点没有子节点。3)Composite: 非叶子节点,用于存储子部件,在Comp原创 2020-05-24 13:36:34 · 190 阅读 · 0 评论 -
装饰者模式
一、简介装饰者模式可以动态地将新功能附加到对象上,在对象的功能扩展方面比继承更有弹性,同时也体现了开闭原则(OCP)。二、原理装饰者模式相关角色:Component主体、ConcreteComponent具体主体、Decorator装饰者。其中Component和ConcreteComponent之间还可以设计一个缓冲层,将共有部分提取出来。其基本设计方案如下:三、实现1)关于Drinkpackage com.giser.designpattern.decorator;/** * @原创 2020-05-23 23:42:22 · 185 阅读 · 0 评论 -
桥接模式
一、简介桥接模式,即Bridge Pattern,是一种结构型模式,将实现和抽象提取到不同的类层次中,使不同层次的类可以独立变化。桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。其主要特点是把抽象(Abstraction)和行为实现(Implementation)分离开来,从而可以保持各部分的独立性,以应对功能扩展。桥接模式使得程序具有更好的扩展性,利于程序的维护。二、实现类图设计如下:1)手机品牌package com.giser.designpatt原创 2020-05-23 00:15:11 · 143 阅读 · 0 评论 -
适配器模式
一、介绍适配器模式解决了因接口不匹配而不能一起工作的两个类如何协同工作的问题,主要是解决类或接口的兼容性问题,又称为包装器Wrapper。适配器模式属于结构型模式,主要分为类适配器模式、对象适配器模式和接口适配器模式三类。二、实现1)类适配器/** * @Note {适配接口} * @author giserDev * @Date 2020-05-21 23:33:19 */public interface IVoltage5V { int output5V();}/** *原创 2020-05-22 00:15:37 · 125 阅读 · 0 评论 -
建造者模式
一、简介建造者模式,Builder Pattern ,又称为生成器模式,是一种对象构建模式。它通过抽象出复杂对象的构造过程来创建对象。二、建造者模式的四个角色一般情况下,建造者模式有四个角色:1)Product,产品角色,一个具体的产品对象;2)Builder,抽象建造者,用于指定Product对象的各个部件的接口或抽象类;3) ConcreteBuilder,具体建造者,接口的具体实现类,构建和装配各个部件;4)Director,指挥者,用于构建一个使用Builder接口的对象,负责控制产原创 2020-05-21 00:27:38 · 142 阅读 · 0 评论 -
原型模式
一、基本介绍原型模式,即Prototype模式,用于在保证性能的情况下创建新的对象实例。原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,而无需知道创建的细节。其工作原理是通过拷贝实现对象创建,即clone()。二、实现1)浅拷贝实现Cloneable接口,重写clone()方法package com.giser.designpattern.prototype;/** * @Note {Sheep} * @author giserDev * @Date 2020-0原创 2020-05-20 22:41:40 · 122 阅读 · 0 评论 -
工厂模式
一、工厂模式概述1、工厂设计模式将实例化对象的代码提取出来,进行统一的维护和管理,实现了对象实例化和程序逻辑的解耦,提高了项目的扩展性和可维护性。2、工厂模式分为三种,即简单工厂模式、工厂方法模式和抽象工厂模式 。3、工厂模式遵循了依赖抽象的原则。二、工厂模式的实现1、简单工厂模式简单工厂模式属于创建型模式,是工厂模式的一种,是工厂模式中最简单实用的一种模式,它定义了一个封装了创建对象的方法的类。当需要大量的创建某类对象时,可以使用工厂模式。//简单工厂类public class Simpl原创 2020-05-19 00:11:47 · 137 阅读 · 0 评论 -
单例模式
一、介绍所谓类的单例设计模式,就是采用一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。如Hibernate的SessionFactory,一般情况下,一个项目只需要一个SessionFactory,此时就可以用到单例模式。二、实现2.1 饿汉式/** * @Note {饿汉式 使用静态变量实现} * @author giserDev * @Date 2020-05-09 22:43:24 */class Singleton原创 2020-05-10 00:45:49 · 116 阅读 · 0 评论 -
Java设计模式基础概述
一、设计模式的目的使用设计模式可以提高程序(软件)的代码重用性、可读性、扩展性、可靠性,能够进一步增强程序的高内聚、低耦合特性。二、设计模式的七大原则1、单一职责即一个类只负责一项职责。这样可以降低类的复杂度,提高类的可读性和可维护性,降低了变更风险。2、接口隔离原则Interface Segregation Principle,即客户端不应依赖不需要的接口,一个类对另一个类的依赖应该...原创 2020-04-16 23:38:54 · 116 阅读 · 0 评论