随笔分类 -  设计模式

摘要:1. 观察者模式简介 在软件开发中,观察者模式是使用频率最高的设计模式之一,如果你做过web开发,对它应该更不会陌生,因为典型的MVC架构就是对观察者模式的一种延伸。在软件开发中经常会碰到这种困境:系统由若干个相互协作的类构成,类之间常有一对多的依赖关系,当被依赖对象的状态变化时,其他所有依赖对象都 阅读全文
posted @ 2018-10-30 11:51 takumiCX 阅读(1698) 评论(0) 推荐(0) 编辑
摘要:[TOC] 1. 关于策略模式 策略模式和java语言的多态特性有些像。java的多态特性允许我们面向接口编程,不用关心接口的具体实现。接口所指向的实现类,以及通过接口调用的方法的具体行为可以到运行时才绑定。这么做最大的好处是在尽可能实现代码复用的前提下更好地应对具体实现类的变化。比如我想增加一种接 阅读全文
posted @ 2018-10-16 11:14 takumiCX 阅读(7064) 评论(0) 推荐(1) 编辑
摘要:[TOC] 1. 前言 代理模式可以说是生活中处处可见。比如说在携程上定火车票,携程在这里就起到了一个代理的作用,比起我们在官网上或者直接去柜台订票,携程可以为用户提供更多人性化的选择。再比如代购,我自己的mbp就是委托别人从香港买回来的,那么那个代购人就相当于代理,免去了我来回的车费以及办签证的麻 阅读全文
posted @ 2018-07-09 18:19 takumiCX 阅读(1847) 评论(0) 推荐(1) 编辑
摘要:[TOC] 1. 前言 现实世界中山寨这种行为往往意味着假冒伪劣,备受批判。但是在软件开发中,山寨却又不少可取之处。首先其“成分”和“质量”和原创不相上下;其次相比原创一个东西的时间开销,山寨一个出来总归是省时省力的,毕竟对于计算机,克隆一个对象要比创建一个对象性能好得多(拷贝对象不会执行构造方法) 阅读全文
posted @ 2018-07-08 18:59 takumiCX 阅读(347) 评论(0) 推荐(0) 编辑
摘要:[TOC] 1. 前言 插头转换器我们应该都用过。当我们要使用二插头的电器而身边只有3孔的插座时,一个插头转换器就能解决插头和插座不匹配的问题。如下图所示 插头转换器其实只做了一件事,就是把原本不能使用的三孔插座转换成了能使用的二孔插座。而这也正是我们接下来要讲的适配器模式的本质:把不能被客户端使用 阅读全文
posted @ 2018-07-07 23:12 takumiCX 阅读(701) 评论(0) 推荐(0) 编辑
摘要:[TOC] 1.前言 直接new一个对象是最简单的创建对象的方式,但大量出现在业务代码中会带来至少两个问题。1:创建对象的细节直接暴露在业务代码中,修改实现细节必须修改相关的大量客户端代码。2:直接面向具体类型编程,违反了面向接口编程的原则,系统进行扩展时也不得不进行大量修改。要使得系统具有的良好的 阅读全文
posted @ 2018-07-06 23:28 takumiCX 阅读(1251) 评论(0) 推荐(3) 编辑
摘要:[TOC] 1. 前言 单例模式可以说是最简单也是最常见的设计模式了,有些语言比如scala甚至在语言层面对其进行了支持。单例是指类的实例在全局只有一个。什么时候我们希望类的实例在整个JVM进程中只有一个?比如说线程池:创建开销很大;还有缓存:占用内存空间很多,而且超过一个也不利于维护。还有其他比如 阅读全文
posted @ 2018-07-05 22:10 takumiCX 阅读(2529) 评论(0) 推荐(1) 编辑
摘要:1. 前言 在平时的项目开发中,我们常会碰到这样的需求。整个业务流程可以由若干操作完成,其中某些操作对所有客户都一样,是不变的,而有些操作确需要由客户端决定,是经常会改变的。比如事务操作,流程可以定义为: 1.开启事务 2.对数据库进行操作 3.成功则提交事务否则回滚 在这个事务操作流程中,1和3是 阅读全文
posted @ 2018-07-05 14:55 takumiCX 阅读(409) 评论(0) 推荐(0) 编辑
摘要:1. 什么是设计模式 首先,设计模式是针对软件开发过程中可能存在的问题的一系列解决方案,常见的有23种。它是开发人员经过无数工程实践总结出来的一套模版,是特定情境下针对特定问题的最佳实践。 其次,设计模式也代表了一种设计思想,它构建了系统中不同角色的交互模型,便于我们直观把握和分析系统的主要矛盾。 阅读全文
posted @ 2018-06-29 19:16 takumiCX 阅读(197) 评论(0) 推荐(0) 编辑