设计模式
本专栏主要是逐一讲述23种设计模式的基本思想,主要是为了记录自己学习的过程,加深自己的理解,当然如果能跟大家共同学习进步,那将是意外的收获。
hy_coming
不忘初心 方得始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【设计模式】——总结
前面已经写了25篇,其中一篇前言和一篇简单工厂模式不属于真正的设计模式,所以总的设计模式为23种,鉴于之前没有画UML图,这里就一并总结下吧(图是从别人哪里拿过来的,懒得画了) 1、创建型设计模式 单例模式模式 工厂模式模式 抽象工厂模式 建造者模式 原型模式 2、结构型设计模式 适配器模式 装饰模式 ...原创 2020-01-05 11:47:51 · 194 阅读 · 0 评论 -
【设计模式】——访问者模式(25)
一、定义 访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下作用于这些元素的新操作。 二、框架运用 JDK中的FileVisitor,Spring中的BeanDefinitionVisitor 三、实战 1、visitor public interface Visitor { void visitConcreteElementA(Conc...原创 2020-01-01 12:56:11 · 171 阅读 · 0 评论 -
【设计模式】——解释器模式(24)
一、定义 解释器模式就是给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 二、框架运用 正则表达式、浏览器就是对解释器模式做好的诠释 三、实战 1、实体类 @Data public class Context { private String name; private Integer age; } 2、解释类 p...原创 2019-12-29 14:02:20 · 161 阅读 · 0 评论 -
【设计模式】——享元模式(23)
一、定义 享元模式就是运用共享技术有效的支持大量细粒度的对象。 二、框架运用 String中的享元模式 三、实战 1、实现类 public abstract class WebSite { protected String name; public WebSite(String name) { this.name = name; } ...原创 2019-12-22 17:09:30 · 151 阅读 · 0 评论 -
【设计模式】——中介者模式(22)
一、定义 中介者模式用一个中介对象来封装一些列的对象交互。 二、框架运用 java.util.Timer中就使用了中介者模式的思想 三、实战 1、执行类 public abstract class AbstractClass { protected Mediator mediator; public AbstractClass(Mediator mediator) ...原创 2019-12-21 13:25:47 · 192 阅读 · 0 评论 -
【设计模式】——职责链模式(21)
一、定义 职责链模式使多个对象都有机会处理,从而避免请求的发送者和接受者之间的耦合关系。将这个对象形成一条链,直到有一个对象处理他为止。 二、框架运用 过滤器就是运用的职责链的设计思路 三、实战 1、抽象父类 public abstract class Manager { private String name; protected Manager superMa...原创 2019-12-20 20:40:01 · 172 阅读 · 0 评论 -
【设计模式】——命令模式(20)
一、定义 命令模式就是将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排列或者记录请求日志,以及支持可撤销的操作。 二、框架运用 tomcat作为一个服务器本身会接受外部大量请求,当一个请求过来后tomcat根据域名去找对应的host,找到host后会根据应用名去找具体的context(应用),然后具体应用处理请求。对于具体host来说他不关心这个请求是谁给的,对应请...原创 2019-12-15 12:06:00 · 167 阅读 · 0 评论 -
【设计模式】——桥接模式(19)
一、定义 桥接模式就是将抽象部分它的实现部分分离,使他们可以独立的变化。 二、框架运用 JDBC是以统一方式访问数据库的API。 三、实战 1、被桥接类 public interface Implementor { void operation(); } public class ImplementorA implements Implementor { @Over...原创 2019-12-14 16:35:46 · 218 阅读 · 0 评论 -
【设计模式】——单例模式(18)
一、定义 单例模式保证一个类仅有一个实例,并提供它的一个全局访问方法。 二、框架运用 Spring中Bean的初始化默认就是就是单例的,如果需要多个,是可以设置的。 在想这个模式之前首先需要知道我们为什么需要单例模式?对Java来说创建一个实例就是new一个对象,如果一个对象不停的被new那么会出现什么?耗资源,严重的耗资源,如果这个对象第二次用的时候还没有销毁直接使用就好了,这是我们考虑...原创 2019-12-08 15:39:36 · 144 阅读 · 0 评论 -
【设计模式】——迭代器模式(17)
一、定义 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.支持对聚合对象的多种遍历。 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)。 二、框架运用 迭代器模式早在Spring中就要使用,有自己的接口类Iterator 三、实战 1、迭代器接口和实现 public interface MyIterator { Object first(); ...原创 2019-12-07 12:38:48 · 142 阅读 · 0 评论 -
【设计模式】——组合模式(16)
一、定义 组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 二、框架运用 springMVC通过组合模式,使得用户或者说框架本身在进行配置时,就通过操作WebMvcConfigurer类及其衍生类这个整体就行了 三、实战 1、抽象类 public abstract class Component { prote...原创 2019-11-30 11:56:42 · 219 阅读 · 0 评论 -
【设计模式】——备忘录模式(15)
一、定义 备忘录模式就是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 二、框架运用(场景) 浏览器的回退功能、棋牌类游戏中的反悔功能,但是缺点就是如果存储的数据量大,就会很大的消耗资源内存。 三、实战 1、发起人 public class Origination { private String st...原创 2019-11-24 11:38:46 · 148 阅读 · 0 评论 -
【设计模式】——适配器模式(14)
一、定义 适配器模式就是将一个类的接口装换成客户希望的另外一个接口。 二、框架运用 springMVC核心代码在于DispatcherServlet类中的doDispatch方法,该方法完成的功能是会根据传入的Controller类型执行相应的方法返回modelView对象。 三、实战 1、实体类 public interface Company { void show();...原创 2019-11-23 12:02:37 · 154 阅读 · 0 评论 -
【设计模式】——状态模式(13)
一、定义 状态模式就是当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 二、框架运用 当一个对象的行为必须取决于他的状态,并且他运行时刻根据状态改变他的行为时,就可以考虑使用状态模式了 三、实战 1、基本类 public interface State { void handle(Context context); } public class S...原创 2019-11-10 12:47:10 · 126 阅读 · 0 评论 -
【设计模式】——抽象工厂模式(12)
一、定义 抽象工厂模式提供一个创建一系列相关或相互依赖的接口,而无需指定他们他们具体的类。 二、框架运用 Spring中bean的获取 三、实战 1、接口、实现类 public interface IProduct { void product(); } @Component public class ProductA implements IProduct { @...原创 2019-11-09 15:04:47 · 202 阅读 · 0 评论 -
【设计模式】——观察者模式(11)
一、定义 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,这个主题对象在状态发生变化时会通知所有观察者对象,使他们能够更新自己。 二、框架运用 现实中我们监听MQ消息并消费的模式使用的就是观察者模式 三、实战 1、观察者 public interface Observer { void update(); } public class Concre...原创 2019-11-03 12:32:38 · 191 阅读 · 0 评论 -
【设计模式】——建造者模式(10)
一、定义 建造者模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 二、框架运用 HttpClient框架在构建Client时就用到了建造者模式 三、实战 1、产品类 public class Product { private List<String> parts = new ArrayList<>(); pub...原创 2019-11-02 12:22:24 · 157 阅读 · 0 评论 -
【设计模式】——简单工厂模式(2)
一、定义 虽然不属于23中设计模式中的一种,但是却是各种工厂模式的基础,就是由一个工厂对象决定创建哪一个产品,其实运用的多态的一种思想。 二、框架运用 spring中的创建bean就是运用的工厂模式,需要根据不同的对象创建不同的对象实例。 三、实战 1.接口Product public interface Product { void product(); } 2.实现类T...原创 2019-05-04 22:00:57 · 388 阅读 · 0 评论 -
【设计模式】——前言(1)
一、背景 这篇专栏申请的时间应该是去年就已经申请了的,但是由于一直忙着别的事情,也就没有时间来更新这个专栏,其实这也是自己第一次写专栏,说实话也不知道从哪里写好,自己也没有一个很好的写的思路,其实直到现在这一刻还是没有,但是这样一直拖着也不是事,所以还是一边想,一边写吧,想到哪里算哪里,写到哪里算哪里吧,本来写作就应该是一件轻松的事,如果想的太多反而拘谨不好,废话不多说,干起来。 二、理解 ...原创 2019-05-04 21:07:04 · 321 阅读 · 0 评论 -
【设计模式】——模板方法模式(8)
一、定义 模板方法模式是的子类不改变一个算法的机构即可重定义该算法的某些特定步骤 二、框架运用 Spring IOC容器初始化时运用到的模板方法模式 三、实战 1、抽象类 public abstract class AbstractClass { public abstract void shuchuStart(); public abstract void shuc...原创 2019-10-06 15:20:48 · 118 阅读 · 0 评论 -
【设计模式】——工厂方法模式(6)
一、定义 工厂方法模式定义一个创建对象的接口,让子类决定实例化那个类。 二、框架运用 Java Collection中的iterator() 方法 三、实战 1、产品类 public interface Product { void product(); } public class TechProduct implements Product { @Overri...原创 2019-10-05 15:24:49 · 120 阅读 · 0 评论 -
【设计模式】——代理模式(5)
一、定义 代理模式为其他对象提供一种代理以控制对这个对象的访问。 二、框架运用 Spring的AOP动态代理是用的代理模式 三、实战 1、抽象父类 public abstract class Subject { public abstract void request(); } 2、真实类 public class RealSubject extends Subject...原创 2019-10-04 12:32:02 · 150 阅读 · 0 评论 -
【设计模式】——装饰模式(4)
一、定义 装饰模式就是为已有的功能动态的添加更多功能的一种方式。 二、框架运用 spring中ApplicationContext 中配置所有的 DataSource就是使用装饰模式 三、实战 1、接口 public interface Component { void Operation(); } 2、具体的对象 public class ConcreteCompone...原创 2019-10-03 17:51:40 · 132 阅读 · 0 评论 -
【设计模式】——策略模式(3)
一、定义 策略模式就是定义一系列算法的方法,从概念上来说,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。 二、框架运用 spring中ApplicationContext 实例的 getResource() 就是使用的策略模式 三、实战 1、策略接口类 public interface Strategy { ...原创 2019-10-02 15:55:57 · 151 阅读 · 0 评论 -
【设计模式】——外观模式(9)
一、定义 外观模式为子系统中的一组接口提供一个一致的界面,其实就是提供一个高层接口,方便别人的调用。 二、框架运用 spring jdbc中的外观模式(org.springframework.jdbc.support.JdbcUtils),Mybatis中的外观模式(org.apache.ibatis.session.Configuration) 三、实战 1、子系统类 public...原创 2019-10-07 12:46:39 · 188 阅读 · 0 评论 -
【设计模式】——原型模式(7)
一、定义 原型模式就是制定创建对象的种类,并且拷贝这些原型创建新的对象。 二、框架运用 Object 类中的 clone 接口 三、实战 1、子类 public class WorkExperience implements Cloneable { private String workDate; private String company; public...原创 2019-10-06 14:56:35 · 149 阅读 · 0 评论