Mingo's Blog

「江湖未静 不得让位」

设计模式之门面模式

模式介绍 门面模式, 也有叫外观模式; 当我们的业务由多个子系统/子业务/子模块组成时, 利用门面模式, 可以简化我们方法调用 门面模式同适配器模式最大的区别在于意图不同, 适配器的意思是把目标类型都转成想要的类型; 而门面模式是简化系统的调用, 对外提供一个一致的API, 甚至屏蔽内部系统的组成; 跟组合模式的区别? 我们在WEB开发时, 每个Service的方法, 就是调用若...

设计模式之适配器模式

模式介绍 适配器模式就是把不同的数据源全部整成统一的格式, 每一种数据源对应一个适配器 比如我想要类型是T, 结果有多个数据源(假设3个吧), 返回的的类型是R1, R2, R3; 为了保证本层代码的结构, 我们增加一层适配器层, 每个数据源对应一个适配器, 主要逻辑就是把R1, R2, R3分别转换成T; 以后每新增一个数据源, 就增加一个对应的适配器; 扩展性好, 屏蔽了与业务...

设计模式之代理模式

模式介绍 代理模式主要作用是对现在功能的增强; 以买房中介为例, 真正提供房了是房地产商, 中介本身没有这个服务, 最终的服务还是由房地产商提供, 但是中介增加了这个买卖房子的效率 代理在外看起来跟真正做事的类是一样的, 所以一般是采用接口或类继承来约束; 互联网有句名言, “没有什么问题是不能增加一层来解决的”, 这个增加一层的常用实现就是代理模式 关于代理, 还有个动态代理的技术...

设计模式之装饰模式

模式介绍 装饰模式也是属于对现在类功能增强的一种模式 跟代理模式最大的不同在于, 装饰类与做事类方法的签名可以不一致, 限制更宽泛; 更多的区别参照代码来体会 代码实现 功能1 1 2 3 4 5 6 public class FunctionLevel1 { public void doSth() { // 功能只能做到level1程度 } } ...

设计模式之责任链模式

模式介绍 该模式的精髓在于Chain, 链式; 在链条上的每一个环, 就是一个单独的处理逻辑; 只有把链条上的每个环都执行过之后, 业务才算执行完成 通过这种方式, 我们可以很灵活的增加一环, 以及调整环在链条的位置 代码实现 1 2 3 4 public interface Handler { public Response handle(Request request)...

设计模式之迭代器模式

模式介绍 迭代器模式就是用来遍历一个集合的方式; 在Java中, 我们可以对任何一个数据结构只要实现了Iterable接口, 就可以使用for-each语法遍历该数据集合 1 2 3 for(E e : myADT) { process(e); } 那为什么我们不直接用for循环来遍历集合, 而还要搞个Iterator呢, 跟集合相比Iterator有2个优点: it...

设计模式之构造器模式

模式介绍 这种模式也很常见及简单, 可以看看各种XXXBuilder的类 通常用来简化对象的创建, 尤其对象的初始化属性很多时; 使用构建器模式可以把setXX方法变成链式调用也是常见手法 代码实现 我个人感觉这里没有定式的编写规则 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class XXXBuilder { publ...

设计模式之模板模式

模式介绍 模板模式也是很常见的一种模式, 尤其是在框架中使用; 在模板类中, 实现功能的通用完整流程, 然后把一些特殊的定制化功能放到子类中; 父类+具体的子类, 就是一个具体的完整实现; 这样可以把公共代码抽取到父类, 可以减少代码的冗余; 其次, 整个功能集的实现从整体上比较统一, 把不同的部分放到相应的子类中实现, 每个子类的实现过程类似于填空, 通过用类来对实现进行区分, 便...

设计模式之组合模式

模式介绍 跟继承-组合不是同一概念 暂时还没想到比较好的理解, 待补充 代码实现 典型应用

设计模式之工厂方法模式

模式介绍 属于创建型模式的一种, 可以简单的理解为, 给一个指令返回我们想要对象实例; 类似如下代码 1 object = factory.get(type); 从广义上讲, 有返回值的方法, 都能算上工厂方法(是否太宽泛…) 通过工厂模式, 可以屏蔽对象的创建细节; 可以减轻创建负担, 比如创建完之后需要做些通用的工作, 如依赖注入, 创建对象的数量控制; 对调用者而言提供一...