设计模式
东东7_7
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
访问器模式
“行为变化”模式在组件构建的过程中,组件行为的变化经常导致组件本身剧烈变化,“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为变化,实现两者之间的松耦合动机在软件构造的过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计如何在不更改类层次结构的前提下,在运行是根据需要透明的为类层次结构上的各个类动态添加新的操作,从而避免上述问题?模板定义表示一个作用于某对象结构中各元素的操作,使得可以在原创 2020-11-18 13:35:19 · 218 阅读 · 0 评论 -
接口隔离模式——门面模式
接口隔离模式在组件构建过程中,某些接口之间之间依赖常常会带来很多问题,甚至无法实现,采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见方案典型模式门面代理模式代理模式适配器中介者系统间耦合复杂度其实这种模式更多的是一种思想,就是要将问题放到同一个接口上统一管理,而不是杂乱的进行管理,不然会造成混乱动机上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户端程序和各子系统的演化,这种过多的耦合面临很多变化的挑战如何简化外部客户程序和系统见的交原创 2020-11-16 17:54:50 · 169 阅读 · 0 评论 -
“对象性能”模式
“对象性能”模式面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定代价。对于通常情况来讲,面向对象地成本大都可以忽略不记。但是某些情况下,面向对象所带来的成本比较谨慎处理典型模式单件模式享元模式单件模式动机在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才确保他们逻辑正确性,以及良好的效率模板定义保证一个类仅有一个实例,并提供一个该实例的全局访问点结构要点总结单件模式中实例构造器可以设置为protected以允许子类派生单件模式一般不要支持拷原创 2020-11-16 15:22:12 · 119 阅读 · 0 评论 -
“对象创建”模式——构建器
动机在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?模板定义将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。结构要点总结Builder 模式主要用于“分步骤构建一个复杂的对原创 2020-11-16 14:39:27 · 296 阅读 · 0 评论 -
“对象创建”模式——抽象工厂
动机在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作,同时由于需求的变化,往往存在更多系列对象的创建对象如何应对这种变化,如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种”多系列具体对象创建工作“的紧耦合模式定义提供一个接口,让该接口负责创建一系列”相关或者相互依赖的对象“无需指定他们具体的类...原创 2020-11-15 17:05:29 · 110 阅读 · 0 评论 -
”对象创建”模式——工厂模式
“对象创建”模式通过“对象创建”模式绕开new,来避免对象(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定,他是接口之后的第一步工作典型模式•Factory Method•Abstract Factory•Prototype•Builder动机在软件系统中,经常面临着创建对象的工作,由于需求的变化,需要创建的对象的具体类型经常变化如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创作“的紧耦合?模板定义定义一个原创 2020-11-14 18:08:42 · 147 阅读 · 0 评论 -
单一职责模式——桥模式
前言桥模式和我们刚才的设计模式一样,都是为了解决多次继承而产生的问题动机由于某些类型的固有实现逻辑,使他们具有两个变化的的维度,乃至多个维度的变化如何应对这种“多维度”变化,利用面向对象技术来使得类型可以轻松沿着两个乃至多个方向变化,而不引入额外复杂度模板定义将抽象部分(业务功能)与实现部分(平台实现)分离,使他们都可以独立地变化结构和上个装饰模式很像,他也是把继承和成员放到一起,去改变类地规模lass Messager{protected: MessagerImp* mes原创 2020-11-14 00:22:23 · 187 阅读 · 0 评论 -
单一职责模式——装饰模式
单一职责模式在软件组件设计中,如果责任划分的不清晰,使用继承得到的结果往往是随需求的变化,子类极具膨胀,同时充斥着重复代码,这时候关键是划清责任装饰模式桥模式动机在某些情况下我们可能会“过度地使用继承l来扩展对象的功能”,由于继承为类型引入静态特性,使得这种扩展方式缺乏灵活性,并且伴随着子类的增多(扩展功能的增多),各种子类组合(扩展功能组合)会导致更多子类的膨胀问题代码//业务操作class Stream{public: virtual char Read(int numbe原创 2020-11-13 23:07:03 · 128 阅读 · 0 评论 -
组件协作模式——观察者模式
动机在软件构造的过程中,我们需要为某些对象建立一种“通知依赖关系”,一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系,从而实现软件体系结构的松耦合情况分析当我们遇到这种情况时候,我们需要再增加一个控件,我们如果直接给他增加一个成员,并且去修改他的构造函数和他的功能函数,这样就造成了一种紧耦合,违背了依赖导致原则,我们依赖的是一种改变的对象,这样对后面软原创 2020-11-11 11:44:35 · 155 阅读 · 0 评论 -
组件协作模式——策略模式
组件协作模式现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚绑定,来实现框架与应用程序之间的松耦合,是二者协作时常用的模式典型模式:模板方法策略模式观察者模式动机在软件的构造的过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变的异常复杂,而且有时候支持不经常使用的算法也是一种性能负担模板定义定义一系列算法,把他们一个个封装起来,并且使他们可以互相替换(变化),该模式使得算法可独立于使用他的客户端程序(稳定),而原创 2020-11-10 10:46:57 · 148 阅读 · 0 评论 -
C++设计模式
前言在我们开发的过程中,由于我们的需求在不断的变换,这样我们需要不断的去改变的我们的代码,这样浪费的大量的时间,从而导致我们做了很多无用功,一个好的设计模式就能帮我们去减少这些开销,让我们有更多的时间去做一些更重要的事情设计模式每一个设计模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,这样,你就能一次又一次的使用该方案而不必做重复的劳动面向对象编程底层: 向下,如何把握机器底层从微观理解对象构造抽象思维:向上,如何将我们周围世界抽象为程序代码面向对象编程:封装:隐藏原创 2020-11-09 15:05:19 · 126 阅读 · 0 评论 -
组件协作模式——模板方法设计模式
GOF-23 模式分类从目的上来看:创建型模式,将对象部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型带来的冲击结构型模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击行为型模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击从范围上来看:4. 类模式处理类与子类的静态关系5. 对象模式处理对象间的动态关系重构获得模式面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”指是原创 2020-11-09 17:29:31 · 146 阅读 · 0 评论
分享