
设计模式
赵彦祖
学而不思则罔,思而不学则殆。
展开
-
设计模式之组合模式
本篇介绍结构型模式中的组合模式。 组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义。 --百度百科 简单来说就是组合模式是专门针对树结构的...原创 2019-12-20 02:42:32 · 119 阅读 · 0 评论 -
设计模式之享元模式
本篇介绍结构型模式中的享元模式。 享元模式 运用共享技术有效的支持大量细粒度的对象。 使用享元模式可以防止系统中产生过多同一个类的类似的对象,这里的类似对象指的是有些属性值是相同的,有些属性值是不同的。而相同的部分在享元模式中又被称为内部状态,不同的部分又被称为外部状态。内部状态是不会变的,外部状态通常会随着环境的改变而改变。 例如富士康如果每生产一部iphone就new一个iphone对...原创 2019-12-19 01:19:24 · 83 阅读 · 0 评论 -
设计模式之外观模式
在工作的时候我们实现一个功能通常需要多个方法合作完成,如果别人需要调用我们的功能就需要知道多个方法的关系或者顺序,如果我们提供一个整合了这些方法的接口,别人只需要调用接口就可以了,不需要关心接口是怎么实现的。 外观模式 提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。允许我们让客户和子系统之间避免紧耦合,且遵循了“最少知识”设计原则。 举两个简单的...原创 2019-11-26 02:27:12 · 202 阅读 · 0 评论 -
设计模式之适配器模式
在日常工作中可能会遇到现有的类可以满足新需求但略有出入的情况,这时候我们可以选择使用适配器模式把现有的类转换成需要的接口,就像我们的手机或者电脑适配器一样,把220V的交流电转换成手机或者电脑可接收的直流电。 适配器模式 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的...原创 2019-12-05 00:49:52 · 118 阅读 · 0 评论 -
设计模式之状态模式
我们先来假设一个业务场景来引入状态模式以便于更好的理解,以后的设计模式系列我都会以这样的方式来写。 我们在淘宝购买商品时,商品会依次出现以下状态:等待买家付款,买家已付款,送货中,交易成功。每个状态可以做的操作如下: 等待买家付款:付款(为了让整个流程可以走下去我们就忽略取消订单吧...); 买家已付款:退货; 送货中:退货,查看物流信息,确认收货; 交易成功:退货,查看物流信息,评价,...原创 2019-11-04 23:51:31 · 211 阅读 · 0 评论 -
设计模式之模版方法模式
本篇文章介绍行为型模式中的模版方法模式,这个设计模式相对来说好理解一些,因为你可能在平时的开发中不自觉的使用到了它。在平常的开发中也许会遇到抽象类控制算法步骤,但某些方法需要延迟到子类中实现,这时候就需要模版方法模式。 模版方法模式 在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类在可以不改变算法结构的情况下,重新定义算法中的某些步骤。 假设我们有个Person抽...原创 2019-11-14 00:11:40 · 98 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式是相当常用的行为型设计模式,博主(也就是我)面试的时候也考到过手写观察者模式的题目,Spring事件中也应用到了观察者模式(其实我还没有深入学习Spring,这是我听说的),反正很重要就是了。 先说明一下业务场景,在我们的周围有很多追星的人,她们大多数都是通过微博与爱豆进行互动,在爱豆发微博后关注了爱豆的粉丝都可以收到提醒,当然粉丝也可以取关爱豆,取关后无法获得爱豆微博更新提醒。 观...原创 2019-11-19 02:07:48 · 505 阅读 · 0 评论 -
设计模式之策略模式
上篇文章中介绍了行为型模式中的状态模式,这篇文章我们来讨论同样是行为型模式的一种且与状态模式的类图完全相同但本质大有不同的策略模式。 还是先假设一个业务场景,在深圳乘地铁有多种支付方式,包括乘车码、单程票、深圳通和Apple Pay等等,针对不同的支付方式后台会有不同的处理方式,在这里我们仅仅输出一下支付方式。通用的实现方法如下: public void payment(String pay...原创 2019-11-13 00:20:37 · 135 阅读 · 0 评论 -
设计模式之工厂模式
工厂模式算是最常见的设计模式之一了,使用工厂模式可以让客户端直接调用工厂类创建自己需要的对象而无需自己去创建(此处对象一般是某个类的实现类)。工厂模式又包括简单工厂模式,工厂模式和抽象工厂模式。 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的...原创 2019-12-17 23:53:47 · 208 阅读 · 0 评论 -
设计模式之单例模式
单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)。 本篇文章仅列举单例模式的几种写法。 饿汉式 public class Singleton{ private Singleton(){} private static Singleton instanc...原创 2019-11-20 00:01:55 · 82 阅读 · 0 评论 -
设计模式之建造者模式
本篇介绍创建型模式中的建造者模式。 这里想说一下,其实很多设计模式我们平时很少会完全用到,即便是最常用的都是如此,更何况一些不常用的,我们学习这些设计模式更多的是学习其编程的思想(我自己的理解),可别只学其形不学其神。 建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 ...原创 2019-12-16 00:11:59 · 183 阅读 · 0 评论 -
设计模式之装饰者模式
本篇我们来介绍一下结构型模式中的装饰者模式。我们在购买机票的时候除了机票之外还可以选择购买一些增值服务,例如航空延误险,接送机券,机场贵宾室等等。如果使用继承来实现此业务场景,会导致有大量类,例如机票套餐类,机票+航空延误险套餐类,机票+接送机券套餐类,机票+航空延误险+机场贵宾室套餐类等等。使用装饰者模式只需为每个增值服务提供一个实现类就可以实现动态添加增值服务的功能。 装饰者模式 装饰模式...原创 2020-01-07 01:30:47 · 134 阅读 · 0 评论 -
设计模式之设计原则
在介绍设计模式之前先来了解一下设计原则,每个设计模式满足至少一个设计原则,了解这些设计原则可以让我们更好的取理解设计模式,而在学习完设计模式后,我们也能更好的理解设计原则。以下为我在看《HeadFirest设计模式》的时候总结的设计原则: 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 针对接口编程,而不是针对实现编程。 类应该对扩展开放,对修改关闭。在不修...原创 2019-10-24 00:30:59 · 222 阅读 · 0 评论