重学设计模式--读后总结篇,我理解的设计模式!!(⼆)
极⼒推荐⼩傅哥的重学设计模式
需要有⼀定设计模式基础的看,可以结合菜鸟教程等等的来⼀起看
⼀、⼆⼗三种设计模式
1.⼆⼗三种设计模式
随着互联⽹⾏业的发展,设计模式也在不多的变化、扩展。下⾯来介绍常⽤的⼆⼗三种设计模式
1.1 ⼯⼚⽅法模式
将多段代码的共性⾏为抽象到接⼝中去定义,具体的实现由⼦类实现⽗类后去定义。最后,通过⼀个⼯⼚类去根据传参来选择返回对应的实例化对象。
关键词: ⼯⼚类⼀般带有Factory
1.2 抽象⼯⼚模式
抽象⼯⼚的本质是其它⼯⼚类的抽象类,也就是将其他⼯⼚类中的共性⾏为提取到了抽象⼯⼚类
关键词: AbstractXXX ⼩傅哥在抽象⼯⼚模式中是使⽤了抽象⼯⼚的另⼀种实现,其中⽤到了代理、适配器、抽象⼯⼚⼏个点,这⾥为CacheService的两种缓存模式实现加上了适配器,使其对应的⽅法与CacheService接⼝的⽅法对应,然后使⽤了动态代理,在代理实例调⽤⽅法时,⽅法调⽤被编码分派到调⽤处理程序的invoke⽅法。 可以将不同的缓存模式的适配器类看作为⼯⼚的构建类,这些⼯⼚类都存在有共性的getter、setter。 这些共性⾏为被抽象到了CacheService中,通过动态代理,在service调⽤的⽅法实际上调⽤的是适配器类中的⽅法。
1.3
建造者模式
⽇常⽣活中,装修房⼦会根据不同的场景、品牌、型号、价格等等组合形成了各式各样的装修风格(套餐A:现代简约,套餐B:轻奢⽥园,套餐C:欧式豪华)
⼀些基本物料不会变,⽽其组合经常变化的时候,就可以选择这样的构建者模式来构建代码。
关键词: Builder
1.4 原型模式        CacheService proxy_EGM
= JDKProxy .getProxy (CacheServiceImpl .class , new  EGMCacheAdapter ());
proxy_EGM .set ("user_name_01", "⼩傅哥");
String val01 = proxy_EGM .get ("user_name_01");
System .out .println ("测试结果:" + val01);
CacheService proxy_IIR = JDKProxy .getProxy (CacheServiceImpl .class , new  IIRCacheAdapter ());
proxy_IIR .set ("user_name_01", "⼩傅哥");
String val02 = proxy_IIR .get ("user_name_01");
System .out .println ("测试结果:" + val02);
在考试中,每个考⽣得到的考卷题⽬⼤致相同,都是从同⼀个考题池中随机组合⼀套题⽬出来分发给所有考⽣进⾏考试,但是这样得到的题⽬,题序⼀样,容易引起作弊,⽽且还是不断地创建初始化统⼀对象。
使⽤原型模式:通过克隆⽅式创建复杂对象、也可以避免重复做初始化操作、不需要与类中所属的其他类耦合等。但也有⼀些缺点如果对象中包括了循环引⽤的克隆,以及类中深度使⽤对象的克隆,都会使此模式变得异常⿇烦。(在重写的克隆⽅法中进⾏乱序)
关键词: 实现了Cloneable
单例模式的几种实现方式
1.5 单例模式
每次拿到或者创建获得的都是同⼀个实例
例如:Spring中的通过@Autowird⾃动注⼊获取的对象也是单例模式的⼀种体现(设定的Bean注⼊模式是单例),其底层是通过Bean的注⼊模式去决定,单例模式是将new创建的实例放⼊容器,每次拿到的都是这个实例对象,原型模式的话就是把创建类的Class对象放⼊容器,每次拿都是调⽤这个wInstance
推荐使⽤枚举单例模式
这种⽅式解决了最主要的;线程安全、⾃由串⾏化、单⼀实例。
关键词: enum
1.6 适配器模式
为存在共性⾏为但是调⽤⽅法不同的类创建适配器接⼝,适配器的实现类实际上调⽤的是原对象的对应⽅法。
接⼝已经做了统⼀的包装,外部使⽤时候就不需要关⼼内部的具体逻辑了。⽽且在调⽤的时候只需要传⼊统⼀的参数即可,这样就满⾜了适配的作⽤。
关键词: Adapter
1.7 桥接模式
桥接模式的主要作⽤就是通过将抽象部分与实现部分分离,把多种可匹配的使⽤进⾏组合。说⽩了核⼼实现也就是在A类中含有B类接⼝,通过构造函数传递B类的实现,这个B类就是设计的桥。
通过模拟与⽀付宝两个⽀付渠道在不同的⽀付模式下,刷脸、指纹、密码,的组合从⽽体现了桥接模式的在这类场景中的合理运⽤。在⽀付⽅式中桥接了指纹⽀付、⼈脸⽀付
Pay zfbPay = new ZfbPay(new PayFingerprintMode());
关键词: Bridge/在初始化时传⼊其它对象作为本类执⾏⽅法的判断
1.8 组合模式(没细品)
组合模式的主要解决的是⼀系列简单逻辑节点或者扩展的复杂逻辑节点在不同结构的组织下,对于外部的调⽤是仍然可以⾮常简单的。
1.9 装饰器模式(没细品)
new BufferedReader(new FileReader(""));,这段代码你是否熟悉,相信学习java开发到字节流、字符流、⽂件流的内容时都见到了这样的代码,⼀层嵌套⼀层,⼀层嵌套⼀层,字节流转字符流等等,⽽这样⽅式的使⽤就是装饰器模式的⼀种体现。
1.10 外观模式(没细品)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。