设计模式
文章平均质量分 79
蜜汁坤丝
崇尚开源。不保证每一篇文章是精品,但一定保证博客内容的准确性,以及给出的示例代码 100% 能运行。
展开
-
深入浅出学设计模式(十二)之模板方法模式
模板方法模式原创 2020-11-26 16:48:04 · 401 阅读 · 0 评论 -
深入浅出学设计模式(十一)之策略模式
今天我们一起来学习一下策略模式,该模式在实际开发中也会经常用到。当我们要完成一件事情有多种方式时,我们就可以考虑使用策略模式,把每一种解决方案当做是一种策略。接下来我们就一起了解一下在代码中如何使用设计模式。1 抛出问题我们假设有这样一个问题:假期出游我们会选择多种出行方式到达目的地,比如:坐飞机、坐火车、自驾等。实现这个小需求,或许我们会想到将多种方式写在一个类中或者写在一个方法中用 if else 来判断。如下:public class TripWay { void travel(in.原创 2020-10-24 17:39:09 · 356 阅读 · 0 评论 -
深入浅出学设计模式(十)之建造者模式
今天我们来一起学习一下建造者模式,也叫生成器模式,该模式属于创建型模式,顾名思义就是用来创建对象的。该模式在日常开发中用的不是很多,掌握其思想即可。在开始之前,我们先想一个这样的场景:一个类有 50 个不同的属性,可想而知该类的构造函数的参数个数、或许也会有多个构造函数,那么这种情况下,在每次需要使用这些构造函数时,是不是就会很头疼了?如果你有遇到过这样的问题,就可以接着往下看,了解一下建造者模式。1 建造者模式定义定义:将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同的表示。什么.原创 2020-10-15 10:14:10 · 119 阅读 · 0 评论 -
深入浅出学设计模式(九)之桥接模式
今天我们一起来学习一下桥接模式,该模式在日常开发中经常使用。该模式主要用于解决一个类可以从多个维度变化时,通过继承来扩展新类导致类爆炸的问题。1 抛出问题需求:现有一服装厂,有各种颜色、款式、大小的短袖,我们如何用代码来描述这些不同的短袖呢。下图提供了一种很传统的做法:如果我们要得到所有不同组合的短袖,就会生成很多的类,将使得我们的代码维护难度增大。假如现在需要给短袖增加不同的图案,那么我们又只能在 S码红色V领短袖 下再派生出 S码红色V领小猪佩奇图案短袖、S码红色V领喜洋洋图案短袖,对于 .原创 2020-10-13 14:25:33 · 237 阅读 · 0 评论 -
深入浅出学设计模式(八)之组合模式
今天我们一起学习组合模式,当我们需要强调整体与部分之间存在层次关系,且整体与部分都具有一样的行为时就可以考虑使用组合模式。比如:在学校老师查人数时,他不需要亲自去数每个同学是否到齐,他可以让小组长去数自己组里有多少同学,然后每个小组长再将结果报给老师,老师做一个汇总即可。组合模式在实际开发中用的可能不是很多,并且使用起来也很简单,我们掌握它的思想即可。组合模式1 组合模式定义2 UML 图3 实际案例4 示例代码1 组合模式定义定义: 组合模式又叫部分-整体模式,是用于把一组相似的对象当作一个单一.原创 2020-10-10 16:51:58 · 200 阅读 · 0 评论 -
深入浅出学设计模式(七)之中介者模式
今天我们一起学习一下中介者模式。该模式在实际开发中用的可能不是很多,一般可以用在类似于调度中心、多个模块之间频繁的进行互相调用时,我们就可以考虑使用中介者模式,就比如我们以前在学习 jsp 的时候,不能直接在一个 jsp 中请求另一个 jsp,而是需要在两个 jsp 之间添加一个 controller 控制器,这样就避免了 jsp 的代码臃肿难维护的问题。1 中介者模式概述1.1 定义中介者模式: 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以.原创 2020-10-09 17:09:16 · 218 阅读 · 0 评论 -
深入浅出学设计模式(六)之观察者模式
今天我们一起学习一下观察者模式,该模式在日常开发中能用的场景非常多,比如:电商平台的到货通知,csdn 博客的关注功能,或者手机 app 中点击按钮实现某个功能,等等。接下来我们就看看如何使用设计模式吧。1 观察者模式解决的问题今天,我们先不一上来就介绍观察者模式的定义、UML 图及如何实现等,我们先根据一个简单的例子来体会一下,如果不使用观察者模式应该如何解决问题。需求:我们在订机票后,常常会关注该航班的动态,是否推迟、起飞时间等。假设我们即将乘坐的是东方航空,东方航空有一个专门的服务:航班动态.原创 2020-09-29 16:33:08 · 419 阅读 · 0 评论 -
深入浅出学设计模式(五)之单例模式
今天,我们一起来学习学习单例模式。单例模式初看很简单,细看有点不简单。今天,我们就从各个角度来讨论一下单例模式。单例模式在我们平常开发中也经常用到,比如:被设计成重量级的对象,一般将其设计成单例,Hibernate 的 SessionFactory 、spring 的 BeanFactory 或者是数据库连接池等。1 单例模式定义定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。该定义不能理解,在一个系统中,只允许 一 个类有一个实例,并且要给其他类提供可以访问这个实例的方法,那么就是.原创 2020-09-28 14:47:21 · 858 阅读 · 0 评论 -
深入浅出学设计模式(四)之适配器模式
今天,我们一起来学习一下适配器模式,这个模式在日常开发中也会经常使用,比如:。。。。在生活中也有很多适配器的例子,比如:我们和外国人讲话的时候,需要一个翻译来将我的中文翻译成英文,这也算是一种适配;最经典的例子莫过于:手机、电脑的电源适配器,我们国家的家用电电压是 220v 是不能直接接到手机上给手机充电的,手机会当场爆炸,所以我们就必须要使用手机的电源适配器将 220v 的电压适配成手机可用的电压 5v。那么,接下来我们学习一下在代码中如何体现适配器模式。1 适配器模式定义适配器模式:将一个类的.原创 2020-09-25 11:09:49 · 181 阅读 · 0 评论 -
深入浅出学设计模式(三)之职责链模式
职责链模式1 职责链模式的定义2 UML 图及简单示例2.1 UML 图2.2 简单示例3 请假问题4 总结在我们开发中,经常会用到职责链模式,比如当员工需要请假时,有的公司规定,小于两天的假可以由小组领导给假、如果是小于 3 天的可以由部门领导批准,如果超过三天则需要老板审批等等。那么,今天我们就来学习一下职责链模式如何使用。1 职责链模式的定义职责链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下原创 2020-09-24 10:37:38 · 241 阅读 · 0 评论 -
深入浅出学设计模式(二)之装饰器模式
在日常开发中,装饰器模式也算用的挺多的,需要在运行时动态的对某一个方法的功能进行调整时,就可以考虑使用动态模式。例如,当我们将一些文本内容保存到一个文件中,在最初的设计中没有考虑其他功能就直接将文本保存到文件中,现在需求有变化,在保存之前需要设置文本的编码方式,经过一段时间后,需求可能又有改变,需要将文本进行加密等等,这种可以往原有的基本方法上添加新功能,就可以考虑使用装饰器模式。1 装饰器模式定义装饰器模式: 在不改变对象(被装饰的对象)自身的基础上,在程序运行期间给对像动态的添加职责。举个生.原创 2020-09-22 16:00:02 · 305 阅读 · 0 评论 -
深入浅出学设计模式(一)之 状态模式
状态模式概要在日常的开发中,状态模式会经常用到,特别是对于一些流程性的功能,比如:订单系统,电子流审批系统等。接下来我将和大家一起来学习状态模式的定义与实际使用。定义状态模式的定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。如何理解这句话呢? 首先我们可以感觉到 这个对象必须是要有状态的,并且它的状态是可以改变的,还有就是当对象的状态改变时,它的行为(也就是它提供的方法)也会跟着变化。接下来,我们可以举两个例子来感受一下这个定义。例子 一:我们每个人在年龄上都有各个原创 2020-09-18 11:40:51 · 283 阅读 · 1 评论