![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 50
围城_危城
菜鸟
展开
-
六、工厂方法模式
1.动机 在软件系统中,经常面临着某个对象的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是他却有着稳定的接口。如何应对这种变化,如何保证依赖该对象的对象不随着需求的变化而变化 2.实现 (1)车接口 我们要实现的类型 package com.example.demo.factory.method; public interface Car { /** * 能跑 */ void run(); /** * 能停 */原创 2022-03-26 23:12:55 · 176 阅读 · 0 评论 -
五、模板方法模式
1、动机 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架于应用之间的关系)需求无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的的变化或者晚期实现的需求? 2、场景 如某个业务需要步骤一、步骤二、步骤三、步骤四、步骤五 五个步骤完成,但是步骤一三四是固定不会变化的,步骤二五有多种变化方式。 (1)实现方式一 方案一:接口(或抽象类)定义步骤一二三四五的方法,并实现一三四的方法,方法的实现和原创 2022-03-26 21:22:56 · 212 阅读 · 0 评论 -
四、建造者模式
1.动机 在软件系统中,存在某些复杂对象的构建工作,其通常由各个部分的子对象用一定的算法组成。由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法确相对稳定,如何提供一种封装离机制隔离各个部分的变化,从而保持系统中稳定构建算法不随着需求改变而改变? 2.实现 (1)要构建的产品 package com.example.demo.builder; public class House { private String floor; private S原创 2022-03-26 20:30:46 · 218 阅读 · 0 评论 -
三、抽象工厂模式
1.动机 软件系统常常面临一系列相互依赖的对象的创建工作,同时,由于需求的变化,往往会有从创建一系列变化到创建另一系列对象的需求。如何应对这种变化,提供一种封装机制来避免客户程序和这种“多系列具体对象的创建工作”的紧耦合。 2.实现 假设现在要实现一个ORM,此时工厂需要获得DB的驱动和SQL实现两个方法,因为驱动和SQL实现往往是一体的,假如生成了MySQL的驱动,但是搭配了Oracle的SQL生成,那必然是不行的,在这个场景中,满足一系列相互依赖的对象这个要求。 (1)抽象SQL、驱动、工厂定义:原创 2022-03-23 16:59:54 · 1381 阅读 · 0 评论 -
二、单例模式
1.动机 在软件系统中,经常有些特殊的类,必须保证他们在系统中只存在一个实例,才能保证他们逻辑的正确性或者良好的性能,如何绕过常规的构造器,提供一种机制来保证一个类只有一种实例。 这里需要注意的是,类设计者需要揽起这种责任,而不是将问题抛给使用者。 2.单线程版实现 package com.example.demo.singleton; import java.util.Objects; public class Singleton { private static Singleton s原创 2022-03-14 18:14:22 · 745 阅读 · 0 评论