
图解设计模式
文章平均质量分 66
用图画和故事的方式通俗讲解设计模式。
_躬行_
c++/java/python,用分析数据来赚钱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
策略模式和责任链模式的区别
。原创 2025-03-12 18:00:26 · 455 阅读 · 0 评论 -
图解设计模式(13) 中介者模式
一、应用场景 每一个类都有不同的职能,如果这些职能要相互调用所有其他功能的类,会使得它们的关系变得复杂化()。这时就可以在它们中间加入一个"Boss",负责协调调度各种关系,使关系变得简单。 例如,在一个公司里有研发、财务、市场等部门,如果直接由各个部门去与其他所有部门联系,则会将关系复杂化。可以通过加入一个中介(比如老板)去统筹调用各个部门来简化这种关系。(这个例子...原创 2019-09-06 00:39:30 · 400 阅读 · 1 评论 -
图解设计模式(12) 模板模式
一、应用场景 用于一些具体流程固定,但是其中的某一个/一些步骤内容有变动的情形。 如:去银行办理业务分3个步骤: 模板方法定义了一个操作中的流程骨架,将某些步骤延迟到子类中实现。这样,子类可以在不改变算法结构的前提下重新定义该算法的某些特定步骤。二、具体实现 实现要点1. 定义一个abstract template类,在其中定义一个子...原创 2019-09-04 19:51:47 · 282 阅读 · 0 评论 -
图解设计模式(11) 策略模式
一、 应用场景 商场对于不同的客户采用不同的打折策略; 施工对于不同的地形地貌采用不同的施工方法;数据处理针对不同批量的数据选取不同的算法等。 对于常用的 if() { }else if(){ }else if(){ }else{} 结构,可以采用策略模式来重构。 当增加新的模式时,不需要修改原有的代码,符合开闭原...原创 2019-09-04 18:49:27 · 414 阅读 · 0 评论 -
图解设计模式(10) 责任链模式
一、应用场景 当责任或者功能呈层级划分时使用。 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。 例如,单位请假审批, 小组长能批一天,超过一天要经理批;经理能批3天,超过3天要找CEO批;超过7天CEO拒绝。 JDK中的Exce...原创 2019-08-31 23:59:33 · 365 阅读 · 0 评论 -
图解设计模式(9) 委派模式
一、 应用场景委派模式,委派模式是一个类A持有另一个类B的对象,当A要做事情时,调用B的对象去做。就像一个老板,公司来活了不是他自己去干,而是委派别人去做。委派模式不是23种设计模式中的一种。二、 具体实现实现要点:1. 一个interface,统一规定要实现的方法。2.被委派者,实现接口,也就是事实上做事的人。3.委派者,实现接口,并且内部保存有被委派...原创 2019-08-31 23:56:52 · 264 阅读 · 1 评论 -
图解设计模式(8) 观察者模式
一、应用场景定义对象间一种一对多的依赖关系,使得当一个对象的状态改变,则所有依赖于它的对象都会得到通知并被自动更新。就是一种一对多的广播机制。 订阅者或者消息接收者称为观察者。二、 实现要点1. 观察者接口,声明update方法用于更新数据。2. 观察者实现类,implements 观察者接口的update方法。3. 主题类,在其中包含容纳所有观察者的list, 通...原创 2019-08-31 23:54:41 · 547 阅读 · 4 评论 -
图解设计模式(7) 代理模式
目录一、使用场景二、静态代理三、 动态代理一、使用场景 通过代理,控制对类/对象的访问。 我们用一个代理对象把真实对象包装起来,真实对象的所有动作都通过代理对象去做,代理对象可以决定是否以及何时由真实类去做,何时由代理类去做。 比如,一个明星(如刘德华),在接到一个演出合同的时候,需要做一系列的事情。 面谈,签合同,收预付款,订机票,演出,收尾款...原创 2019-08-31 23:53:56 · 410 阅读 · 1 评论 -
图解设计模式(6) 装饰模式
一、 适用场景 动态地为一个对象增加新的功能。 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免了产生过多类型。 比如一个汽车,具有行驶的功能。后来业务扩展需要又需要它有飞行、潜水、自动驾驶的功能,如果这些功能都通过继承去实现的话,它们两两组合要写好多的类。 这个时候我们就...原创 2019-08-31 23:51:52 · 291 阅读 · 1 评论 -
图解设计模式(5) 适配器模式
一、适用场景 如生活中键盘有USB接口的和ps/2接口的。我们手上有一个ps/2接口的键盘但笔记本电脑只有USB接口,我们只要找一个接口转换器就能让键盘在笔记本电脑上使用了。 适配器模式是将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能相互调用的类能够一起工作。二、实现 适配器的实现需要3个构件: 目...原创 2019-08-31 20:28:29 · 292 阅读 · 0 评论 -
图解设计模式(4) 原型模式
目录一、应用场景二、原型模式的实现1. Cloneable接口和clone方法2.浅克隆与深克隆一、应用场景 原型模式就是利用一个对象去创建另一个对象,就是C++中的拷贝构造。 如果通过new创建一个对象需要非常繁琐的数据准备或访问权限设置,则可以使用原型模式。以某个对象为原型,复制出新的对象,新的对象具有原型对象的特点。 优点: 效率高(直接克隆...原创 2019-08-31 18:28:50 · 368 阅读 · 0 评论 -
图解设计模式(3) 工厂方法模式
目录一、 简单工厂模式二、 工厂方法模式三、简单工厂与工厂方法的比较工厂方法是由简单工厂模式改进来的。先说一下简单工厂模式。一、 简单工厂模式 就是封装一个简单的工厂类,提供一个对外开放的获取实例的方法。为了获取不同类型的实例,我们可以通过传入一个参数来选择(或者写成不同的方法名getBenz、 getBMW)。/***定义一个car接口*/interfa...原创 2019-08-29 17:24:12 · 287 阅读 · 0 评论 -
图解设计模式(2) 单例模式
目录一、什么是单例模式二、单例模式的实现1. 饿汉式2. 懒汉式3.双重检测锁式4.静态内部类式5.枚举式一、什么是单例模式 单例模式,就是使一个类只能产生一个实例。 应用场景: 当一个对象的产生需要比较多的资源时,则可以在应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决。 应该只有一个实例的情形,如系统任务管理器、...原创 2019-08-27 16:25:35 · 284 阅读 · 0 评论 -
图解设计模式(1) 设计模式的分类
设计模式按照功能和目的通常划分为三类:一、创建型模式:关注对象的创建。对对象的实例化过程进行抽象,使调用者不用关心这些对象是如何创建的。 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 通常做法是抽象出一个类,提供一个公开的静态方法,调用这个方法就可以获得对象实例。二、结构型模式:关注对象的组成及对象间的关系。 共七种:适配器模式、...原创 2019-08-25 19:48:12 · 372 阅读 · 1 评论 -
(转)设计模式六大原则 见过写的比较好的一篇
设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责...转载 2019-08-01 15:15:50 · 245 阅读 · 0 评论