设计模式
zhangSir134
不断思考,不断总结
展开
-
[设计模式] ------ 原型模式(浅拷贝和深拷贝)
原型模式原型模式就是使用复制对象,创建出新的对象,并且不需要知道创建的细节(比如类的属性的赋值等等)。基本使用(浅拷贝)常见的就是使用Object的clone方法。需要让类实现Cloneable并重写clone方法,才能使用。public class A implements Cloneable{ private String code; private String na...原创 2020-04-01 01:38:57 · 7444 阅读 · 0 评论 -
[设计模式] ------ 对比总结:简单工厂模式、工厂方法模式、抽象工厂模式
三个概念:简单工厂模式:就是一个简单的工厂类,根据不同的入参类型,返回不同的父类引用的子类对象。工厂方法模式:就是将生成哪个子类对象的过程,延迟到工厂子类实现,工厂父类只定义接口。抽象工厂模式:就是在工厂方法模式的基础上,将使用哪个工厂子类的逻辑,再使用简单工厂的模式生成。互相关系工厂方法模式,就是对简单工厂模式的改进。抽象工厂模式,就是对工厂方法的改进。优缺点简单工厂模式,就是简...原创 2020-03-31 02:07:02 · 7358 阅读 · 0 评论 -
[设计模式] ------ 抽象工厂模式
抽象工厂模式抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了。其实就是相当于将创建哪个工厂的权利再次放给调用端。调用端在调用的时候,指定用哪个工厂,那最后得到的对象,就是对应那个工厂的对象。抽象工厂模式 = 简单工厂模式 + 工厂方法模式。抽象工厂模式 = 工厂的工厂。抽象工厂模式优缺点:优点是再次聚合,对使用者来说,...原创 2020-03-31 01:44:24 · 7296 阅读 · 0 评论 -
[设计模式] ------ 工厂方法模式
工厂方法模式假设有一大类对象A1,A2,A3,A4…他们都有一个共同的父类A那么如何利用工厂方法模式创建这些对象呢?1、定义一个工厂的接口以及返回实体的方法interface Factory{ // 定义一个方法,返回A A create();}2、针对每个对象,定义创建他们的工厂,每个工厂都实现第一步的工厂接口class A1Factory implement Factory...原创 2020-03-30 21:09:11 · 7311 阅读 · 0 评论 -
[设计模式] ------ 观察者模式和他的升级版发布订阅模式
观察者模式,发布订阅模式,最快理解原创 2020-03-26 22:36:49 · 7329 阅读 · 0 评论 -
[设计模式] ------ 建造者模式(对比模板模式)
建造者模式建造者模式,是为了构建一类具有相同执行顺序的但实现不一样,最后产生不一样的东西的效果。举个例子,比如写作文。每次写作文,我们大致有写标题,写开头,写内容,写结尾这些步骤。public abstract class Builder { abstract String 写标题(); abstract String 写开头(); abstract Stri...原创 2020-03-25 23:49:58 · 7638 阅读 · 0 评论 -
[设计模式] ------ 策略模式实战:java中替代if-else的大段逻辑
java中用策略模式替代if-else的大段逻辑问题:java本来是一门以面向对象为主的语言,但很多人嘴上说着java面向对象,然后除了表映射实体之外,其他的还是面向过程的思路。就比如今天要说的,代码中大段大段的if-else判断,每个if-else代码块中又有很多复杂的逻辑,导致整个代码混乱不堪,让别人看到就感觉看到屎一样的代码一样。那么,如何优雅的替代这些代码呢,其实有个设计模式(策略...原创 2019-09-23 11:35:49 · 8964 阅读 · 0 评论 -
[设计模式] ------ 适配器模式
适配器把一个类的接口,强制变成另外一个类的接口实现。个人建议,万不得已不要用适配器。如果你的项目刚刚起步,就有人用了适配器,那基本上就是滥用。适配器一般是项目庞大,接口已经对外提供出去,不好快速修改了,但由于特殊业务需要其他接口的实现,不得已才用的。所以,适配器模式,能少用则少用,能不用则不用。具体实现假设有个类A,类中有方法aMethod;再有个类B,类中有方法bMethod;正...原创 2019-07-16 23:33:43 · 7168 阅读 · 0 评论 -
[设计模式] ------ 装饰模式
首先,假设项目有个核心功能。随着项目迭代,又产生功能1和功能2于是有如下需求:某个场景需要核心功能和功能1组合,某个场景需要核心功能和功能2组合,某个场景需要核心功能和功能1和功能2组合,甚至以后有了功能3,某个场景要核心功能和功能1和功能3组合。那么这种情况,就要使用装饰模式,为已有核心功能按一定顺序动态增加其他功能。使用装饰模式,优点在于区分核心功能和其他装饰功能。而且按照装饰...原创 2019-07-23 23:44:30 · 7253 阅读 · 0 评论 -
[设计模式] ------ 单例模式
单例模式,是众多设计模式中,写法最多,套路最多,坑最多,面试被问最多的设计模式。基本上,单例模式在面试中已经被问烂了,依稀记得我的上家公司面试我的时候,说到设计模式,直接就说,写一种设计模式,但单例除外。但不得不说,单例由于其概念简单,实用性广的特点,在项目中很是常见。概念:单例模式就是确保一个类只有一个实例的设计模式。设计的思路无非就是先new一个实例,以后都用这个实例就行了。难点在...原创 2019-07-08 20:55:56 · 7372 阅读 · 0 评论 -
[设计模式] ------ 模板模式
模板模式模板模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤一般是定义一个抽象类,有抽象方法,有骨架方法,骨架方法中会定义这几个抽象方法的调用顺序。然后再定义多个实现类,继承这个抽象类,那么就得覆盖父类的抽象方法,那么每个实现类调用骨架方法,最终的结构就是按照父类中预先定义好的调用顺序,去调用自己实现的各个...原创 2018-12-28 00:16:23 · 8131 阅读 · 0 评论 -
[设计模式] ------ 简单工厂模式
简单工厂模式不同类型下创建对应的不同的对象,得到不同的结果,就叫简单生产模式比如定义一个接口,叫A,里面有方法a,返回int类型类B1实现A接口,也实现a方法,里面做的是加法运算类B2实现A接口,也实现a方法,里面做的是减法运算类B3实现A接口,也实现a方法,里面做的是乘法运算类B4实现A接口,也实现a方法,里面做的是除法运算定义一个类叫SimpleFactory,里面属性是A,有...原创 2018-12-27 23:42:35 · 7694 阅读 · 0 评论 -
[设计模式] ------ 策略模式
策略模式它定义了算法家族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化,不会影响到使用算法的客户其实很简单,可能很多人都用到了,只不过还不知道这就是策略模式而已。比如定义一个接口A,下面有个方法叫a类B1实现了这个方法,当然也要实现a方法,假如B1的a方法中打印了b1b1b1类B2实现了这个方法,当然也要实现a方法,假如B2的a方法中打印了b2b2b2类B3实现了这个方法,...原创 2018-12-27 23:20:17 · 7627 阅读 · 0 评论 -
[设计模式] ------ 代理模式
几句话讲明白代理模式代理模式:1.定义 个接口A,接口有个方法methodA(); 2.定义一个实现类B,实现这个接口A,并重写方法methodA(); 3.定义一个代理类C,也实现接口A,并将类B作为他的一个属性, 然后C也重写方法methodA();但方法的实现为B调用B中重写的方法这样就是一个简单的代理模式,其中B和C实现了相同的接口,都重写了接口中的方法,但最终调...原创 2018-06-11 23:29:43 · 7527 阅读 · 0 评论