设计模式
Aero Auto
learning...
展开
-
设计模式(一)设计模式的分类
备注:因为这些模式我还没有看完,所以后一半模式只有引用,没有简单阐述。后续再补充完 常用的设计模式可以概括为23种,按照特点可以将其分为三大类型: ■ 创建型 ■ 结构型 ■ 行为型 建构型 ■ 单例模式(Singleton Pattern): 一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式可以应用于系统类常驻资源的访问,这一类资源可以提前创建,免去使用时创建的耗时。 ...原创 2020-03-06 20:05:01 · 287 阅读 · 0 评论 -
设计模式(十四)尾声——几本设计模式书籍的比较
——门面模式、中介者模式、代理模式对比原创 2020-07-28 19:23:30 · 330 阅读 · 0 评论 -
设计模式(十三)桥梁模式、工厂模式、策略模式比较
桥梁模式和工厂模式有些类似的地方,基于一个抽象类,来创建不同的实例化子类。 1.桥梁模式 这里,在合适的情况下,抽象行为可以省略,于是就成了一个基本的接口——实现模型。 策略模式 从下图的调用结构看,策略模式和桥梁模式非常类似,结构都差不多。 工厂模式: 如果用工厂模式来实现,就是下面的结构: 所以相比之下只是多了一层工厂的抽象而已。 3.策略模式 ...原创 2020-07-17 20:32:44 · 240 阅读 · 0 评论 -
设计模式(十二)创建类模式比较
在看完基础的设计模式之后,回头想想,其实大部分模式仍然是半瓶水。对于一种简单的模式稍加变化,模式里面的各个部分应该如何继续抽象? 1.策略模式中,环境角色似乎是不需要的。但在实际的运用中,它在处理多角色情况下,是必不可少的。这些都需要加深理解。 2.状态模式和命令模式,在形式上比较类似,封装上都具有可循的踪迹。那么具体每一个部分,究竟在何时可以发挥出它的作用?这是需要深入理解的。 3.当我们扩展的时候,可以基于原来的哪些部分来抽象,创造出合适系统需要的结果,进一步提升封装和扩展的优化?目前自己离这一步还很远原创 2020-05-26 21:11:54 · 197 阅读 · 0 评论 -
设计模式(十一)访问者模式 状态模式 解释器模式
好了,这个鬼玩意儿,前前后后持续了好多年才完成。终于迎来最后几个模式了。此刻,我的心情是复杂的。有万分之九千浪费光阴的悔恨,又有万分之一的满意。 老实说,这种枯燥的东西,对我这样的普通人来讲,耐着性子看完也算不错了。前前后后几本书交替着看,勉强隐约地窥见了部分门道。 又老实说,我还是很担心和焦虑的。这样一个很小的模组,居然花了我四个月的时间。而已只是完成了基础模式的部分。我这口老血吐的头发都白了。要不是加入007,真是不容易持续下来啊。 为啥我写这么多废话呢,因为评论老实说看不懂。我就前面写点你能看懂的。看原创 2020-05-21 21:55:10 · 233 阅读 · 0 评论 -
设计模式(十)观察者模式 备忘录模式
观察者模式 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 实际上,观察者模式只是典型的回调机制,可以广播。比较简单,就不多叙述了。 备忘录模式 意思是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。 ■ 发起人(Originator)角色:该角色记录当...原创 2020-05-14 17:30:04 · 267 阅读 · 0 评论 -
设计模式(九)中介者模式
本来这一章是想一起写完中介者模式 观察者模式 备忘录模式的,但是觉得中介者在实际中比较有意义,所以单独一章吧。 中介者模式 用一个中介对象封装一系列对象(同事)的交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 实例: 中介者有两个接口:注册会员,为会员配对。具体终结者实现这两个接口。其中男女双方是各自独立的,不需要直接交互。 解耦原理解析 ...原创 2020-04-29 18:11:05 · 149 阅读 · 0 评论 -
设计模式(八)模板方法模式 命令模式 责任链模式
模板方法模式 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式涉及两个角色。 ■ 抽象模板(Abstract Template)角色:该角色定义一个或多个抽象操作,以便让子类实现;这些抽象操作是基本操作,是一个顶级逻辑的组成步骤。还需要定义并实现一个或几个模板方法,这些模板方法一般是具体方法,即一个框架,实现对...原创 2020-04-24 13:55:25 · 251 阅读 · 0 评论 -
设计模式(七)组合模式 桥梁模式 外观模式
组合模式 将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式提供以下3个角色: ■ 抽象构件(Component)角色:该角色定义参加组合对象的共有方法和属性,规范一些默认的行为接口。 ■ 叶子构件(Leaf)角色:该角色是叶子对象,其下没有其他的分支,定义出参加组合的原始对象的行为。 ■ 树枝构件(Composite)角色:该角色代表...原创 2020-04-21 22:00:40 · 200 阅读 · 0 评论 -
设计模式(六)装饰模式
定义: 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式有以下4个角色。 ■ 抽象构件(Component)角色:该角色用于规范需要装饰的对象(原始对象)。 ■ 具体构件(Concrete Component)角色:该角色实现抽象构件接口,定义一个需要装饰的原始类。 ■ 装饰(Decorator)角色:该角色持有一个构件对象的实例,并定义一个与抽象...原创 2020-04-06 11:35:58 · 186 阅读 · 0 评论 -
设计模式(五)代理模式
代理模式,也叫委托模式。用代理商隔开用户与目标。用户不直接访问目标,而是访问代理,再委托代理完成相关操作。 代理者可以再操作前后进行额外的处理,比如访问计数,批量创建,信息汇总等。 为其他对象提供一种代理以控制对这个对象的访问。 按照使用目的可以将代理划分为以下几种。 ■ 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局部代表对象。这个不同的地址空间可以是在本机器中,也可...原创 2020-03-23 14:38:37 · 173 阅读 · 0 评论 -
设计模式(四)建造者模式
奇怪,我怎么感觉我写过这个东西。。。。 好吧,我翻了一下,没有写。 这个东西,和工厂模式差不多。差别在于:工厂模式是生产不同的对象。构建者相当于,选择不同型号的配件来组装成品。 我突然记起来了,我真的没有写过这个东西。是以前看书的时候做过笔记而已。。。 一,设置部件 典型的场景,比如qq秀装备。设置衣服,帽帽,裤裤,等。设置好了,就生成一个qq秀套装。 还比如,配置电脑,选择不同的cpu,内存条...原创 2020-03-20 20:00:24 · 107 阅读 · 0 评论 -
设计模式(三)工厂模式
实际上本来是要写迭代器的,不过在看了一篇工厂模式的文章之后,觉得自己对工厂模式了解的不够全面。 简单复述一下工厂模式的类型和扩展。 工厂模式可分为简单工厂、工厂方法和抽象工厂模式。 工厂方法模式(Factory Method Pattern)又叫虚拟构造函数(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建...原创 2020-02-22 17:58:02 · 371 阅读 · 0 评论 -
设计模式(二)设计原则
设计模式以以下原则为指导: 开闭原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 一个软件实体应当对扩展开放,对修改关闭。 这个很难理解,听到就一头雾水。啥是扩展?啥是修改?啥是开放?啥是关闭?根本不是人话。。。 看了很久才理解一点点:我们在架构的时候,要考虑到后续的扩展,但是尽量不要去修改原来的接口。 说的轻松,但是怎么实现呢?那就是后面的原则。 单一职...原创 2020-03-13 22:04:06 · 134 阅读 · 0 评论