
设计模式
文章平均质量分 76
lpckr94
纸上读来终觉浅,绝知此事要躬行
展开
-
设计模式学习——工厂模式
在装饰者模式中我们讲到一条设计原则,即我们应该为对象间的松耦合而努力。在初始化对象时,除了使用new操作符之外,还有更多制造对象的方法,实例化这个活动不应该总是公开的进行,初始化经常造成“耦合”问题,我们不希望这样,而工厂模式能够将我们从复杂的依赖中解脱出来。工厂模式简单工厂模式 工厂方法 抽象工厂模式简单工厂模式准确的说,简单工厂其实不是一个设计模式,反而比较像是一种编程习...原创 2018-08-01 10:17:00 · 201 阅读 · 0 评论 -
设计模式学习——装饰者模式
当我们来到KFC开始点餐的时候,一开始还不是特别有胃口,所以只点了一份汉堡套餐,有一份汉堡和饮料,但后来又点了一份薯条,最后干脆再点一份炸鸡腿,那么如何来计算我们花了多少钱呢?在这个场景下,装饰者模式会起到很好的效果。装饰者模式定义:动态的将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。即通过将装饰者和组件组合的方式,来加入新的行为。行为来自装饰者和组件的...原创 2018-08-01 10:16:44 · 173 阅读 · 0 评论 -
设计模式学习——观察者模式
如果我们现在向一家报社订阅了一份报纸,那么这家报社不管今天我们有没有心情看报纸,它都会把报纸送过来。有一天我们实在是不想看这家的报纸了,我们如果取消了订阅,那么从此以后报社再也不会送报纸到我们家了。上面这一段情景,其实和观察者模式的工作性质是一样的。观察者模式定义:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。其实就是有人发布信息,...原创 2018-08-01 10:16:30 · 258 阅读 · 0 评论 -
设计模式学习——策略模式
不管你在何处工作,构建些什么,用何种编程语言,在软件开发上,一直有条颠扑不破的真理:成长与改变。不管软件设计的多好,一段时间之后,总是需要成长与改变,否则软件就会死亡。对于此,首先有第一条设计原则:封装变化 即将应用中需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。除此在外,我们还希望我们的代码易于维护和扩展,更加富有弹性,对于此,有第二条设计原则:面向...原创 2018-08-01 10:15:50 · 149 阅读 · 0 评论 -
设计模式学习——代理模式
如果我们想购置房屋,绝大多数情况下不会直接去找房主谈生意,因为这个过程实在是太消耗精力和时间了,我们会选择经验老道的中介,来挑选我们自己喜欢的房源,协商价格,一切都委托给他办理,我们需要做的就是付钱而已。代理模式起到的作用,就和中介一样,架起了客户与委托者之间的桥梁。代理模式定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用UML图客户:使用委托类的对象...原创 2018-08-01 10:19:53 · 140 阅读 · 0 评论 -
设计模式学习——状态模式
状态模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,将容易产生问题的if语句删除,以方便日后的维护,同时也让每一个状态对修改关闭,让含有状态的类对扩展开放。状态模式定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。UML图内容:内部持有某些状态接口,并维护着对象的现有状态 状态接口:抽象状态类或者接口,用以封装行为 具体状态:具体状态类,...原创 2018-08-01 10:19:45 · 284 阅读 · 0 评论 -
设计模式学习——模板方法模式
模板方法模式将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。模板方法模式定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。UML图例子我们知道泡茶和泡咖啡步骤大致一致,分别是1 把水煮沸 2 用沸水煮泡咖啡/浸泡茶叶...原创 2018-08-01 10:19:24 · 156 阅读 · 0 评论 -
设计模式学习——适配器模式
适配器(Adpater),顾名思义,与我们平时生活中常见的电源转换头一样,起着转换的作用,是用来适配的中间件,连接原本不匹配的两类。适配器模式定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。类适配器 对象适配器 接口适配器UML图目标:目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类 转换类:所有的请求都委托...原创 2018-08-01 10:19:16 · 188 阅读 · 0 评论 -
设计模式学习——命令模式
现在我们手里有一副遥控器,上面有分别控制着电视、电灯、电脑开关的按钮,当我们按下按钮的开或者关控制键时,这些电器就会做出相应的反应,即请求者(遥控器),向接受者(电器)发送命令,接受者根据收到的命令做出相应的反应,这就是典型的命令模式场景,它利用命令这个接口实现了请求者与接受者的解耦。命令模式定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化对象,命令模式也支持撤销的操作...原创 2018-08-01 10:19:08 · 284 阅读 · 0 评论 -
设计模式学习——单例模式
当我们使用线程池,缓存,注册表和日志等这些对象时,是否疑惑过,我们那么多个类使用的这些对象是同一个对象实例吗?答案显而易见——如果不是的话,那么这些功能将面临着无数的问题,这就是单件模式。事实上,想让一个对象全局共享,static关键字也起着重要的作用,但是如果我们不是经常使用这个对象且该对象十分消耗资源的话,要知道这个对象是一开始就会被出创建的,那么是对我们系统资源的极大浪费,而单件模式可以...原创 2018-08-01 10:18:57 · 135 阅读 · 0 评论 -
设计模式学习笔记
该系列文章涉及到了一些常见的设计模式和其简单例子的实现和讲解,如策略模式,单例模式,工厂模式等等。githubdesign-pattern如果觉得不错,请先在这个仓库上点个star吧,这也是对我的肯定和鼓励,谢谢了。不定时进行调整和补充,需要关注更新的请 Watch、Star、Fork目录设计模式学习——策略模式 设计模式学习——观察者模式 设计模式学习——装饰者模式 设计...原创 2018-08-02 09:22:21 · 162 阅读 · 0 评论