![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
一颗日成
这个作者很懒,什么都没留下…
展开
-
设计模式(五):单例模式(持续更新...)
设计模式(五):单例模式(持续更新…)定义: ·让类自身保证它只有一个实例,并提供一个全局访问点。 ·不能通过构造函数构造,否则就能够实例化多个。构造函数需要私有声明主要解决: ·一个全局使用的类频繁地创建与销毁何时使用: ·当想控制实例数目,节省系统资源的时候以代码为例: 关系类图如下一、设计Singleton类#include <iostream>...原创 2019-07-29 20:44:47 · 82 阅读 · 0 评论 -
设计模式(十七):迭代器模式
设计模式(十七):迭代器模式定义:提供一种方法顺序遍历一个聚集对象,为不同的聚集结构提供遍历所需接口,而不暴露对象内部的表示。主要解决:不同的方式来遍历整个整合对象如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。以代码为例类图关系如下一、定义Aggregate类Aggregate为聚合定义了一个接口,它将客户端与对象集合的实现分离开来#includ...原创 2019-08-10 20:13:55 · 141 阅读 · 0 评论 -
设计模式(十四):桥接模式
设计模式(十四):桥接模式定义: ·抽象类和其派生类分离,各自实现自己的对象。若系统可以从多角度分类,且每种分类都可能变化,则把多角度分离独立出来,降低耦合。 ·涉及到一个作为桥接的接口,使实体类的功能独立于接口实现类。这两种类型的类结构化改变而互不影响。主要解决: ·对象的继承关系编译时已确定,所以无法在运行时修改从父类继承的实现,由于紧耦合,父类中任何的改变必然会导致子类发生变...原创 2019-08-07 20:30:53 · 144 阅读 · 0 评论 -
设计模式(十三):外观模式
设计模式(十三):外观模式定义: ·为子系统中一组接口提供一个一致的界面,即定义一个高层接口,增加子系统的易用性,隐藏系统的复杂性 ·这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。主要解决: ·降低访问复杂系统的内部系统的复杂度,简化客户端与之的接口如何解决: ·客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好,即为复...原创 2019-08-06 20:02:00 · 147 阅读 · 0 评论 -
设计模式(四):装饰器模式
设计模式(四):装饰器模式定义: ·动态的给一个对象添加一些额外的职能,把所需功能按顺序串联起来并进行控制。主要解决: ·当为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用: ·在不想增多很多子类的情况下扩展类以代码为例: 类关系图如下一、定义Component抽象类为可以动态添加功能的对象定义接口#inc...原创 2019-07-28 19:37:05 · 99 阅读 · 0 评论 -
设计模式(八):模板模式
设计模式(八):模板模式定义: ·定义一个操作中的算法框架,将一些步骤延迟到子类中。子类在不改变框架的前提下就可以重新定义某些特定步骤主要解决: ·一些方法通用,却在每一个子类都重新写了这一方法。如何解决: ·将这些通用算法抽象出来。在抽象类实现,其他步骤在子类实现以代码为例: 关系类图如下一、定义AbstractClass#include <iostream&...原创 2019-08-01 19:53:10 · 108 阅读 · 0 评论 -
设计模式(十二):原型模式(持续更新。。。)
设计模式(十二):原型模式(持续更新。。。)定义: ·是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式主要解决: ·在运行期建立和删除原型。如何解决: ·利用已有的一个原型对象,快速地生成和原型对象一样的实例。以代码为例: 类图关系如下一、定义Prototype类声明一个接口来克隆自己#include <iostream>#i...原创 2019-08-05 21:14:09 · 82 阅读 · 0 评论 -
设计模式(三):观察者模式
设计模式(三):观察者模式定义: ·多个观察者对象同时建通某一主题(通知者)对象,当该主题对象状态变化时会通知所有观察者对象,是他们能更新自己。 ·也就是说定义对象间的一种多对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决: ·一个对象状态的改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用: ·一个对象...原创 2019-07-27 20:11:11 · 98 阅读 · 0 评论 -
设计模式(二):抽象工厂模式
设计模式(二):抽象工厂模式定义: ·提供一个创建一系列相关或互相依赖对象的接口,只需要知道对象的系列,无需知道具体的对象。 ·在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。主要解决: ·接口选择的问题。何时使用: ·系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。以代码为例: 类关系图如...原创 2019-07-26 21:37:01 · 111 阅读 · 0 评论 -
设计模式(十一):建造者模式
设计模式(十一):建造者模式定义: ·将复杂对象的创建与表示分开,使得相同的创建过程可以有不同的表示。用户只需制定需要建造的类型,不需要知道建造的过程和细节。主要解决: ·主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成; ·由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何...原创 2019-08-04 21:04:16 · 115 阅读 · 0 评论 -
设计模式(七):适配器模式
设计模式(七):适配器模式定义: ·当系统数据和行为都一致,只有接口不符合时,将一个类的接口转化为客户端期望的另一个接口。主要解决: ·主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。何时使用: ·系统需要使用现有的类,而此类的接口不符合系统的需要。 ·想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,...原创 2019-07-31 19:41:30 · 151 阅读 · 0 评论 -
设计模式
设计模式借用百度百科所说: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的就是为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。23种设计模式被分为创建型模式、结构型模式和行为型模式三种模式创建型模式:·工厂方法模式...原创 2019-07-26 20:18:31 · 134 阅读 · 0 评论 -
设计模式(十):代理模式
设计模式(十):代理模式定义: ·为其他对象提供一种代理以控制对这个对象的访问。实际上是在访问对象时引入一定程度的间接性 ·创建具有现有对象的对象,以便向外界提供功能接口。主要解决: ·在直接访问对象时带来的问题如何解决: ·增加中间件以代码为例: 关系类图如下一、定义Subject类Subject为Real Subject和Proxy的公共接口,以便可以在期望R...原创 2019-08-03 19:33:10 · 105 阅读 · 0 评论 -
设计模式(一):策略模式
设计模式(一):策略模式定义:·策略模式定义算法家族并分别封装,他们完成的工作相同,只是实现不同,可以互相替换。继承有助于析取这些算法的公共功能。此模式让算法的变化不会影响到使用算法的用户。·一个系统有许多许多类,每一个策略都是实现同一个接口,而区分它们的只是他们直接的行为。以代码为例: 类关系图如下:1、首先声明父类Strategyclass Strategy{public...原创 2019-07-25 20:04:12 · 199 阅读 · 0 评论 -
设计模式(六):命令模式
设计模式(六):命令模式定义: ·将请求分装为对象,将请求和执行分开,可以用不同的请求对客户参数化。可以对请求排队、通过或否决、记录日志、撤销或重做。 ·通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。主要解决: ·在软件系统中,对行为请求者和行为实现者进行松耦。何时使用: ·基于敏捷开发原则,不要给代码添加基于猜测而实际不需要的功能,在需要的时候通过重构实现以代...原创 2019-07-30 20:48:37 · 96 阅读 · 0 评论 -
设计模式(九):状态模式
设计模式(九):状态模式定义: ·一个对象可能拥有多种状态,当内在状态改变时允许改变行为。 ·在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 ·在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象主要解决: ·对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。如何解决:...原创 2019-08-02 21:50:31 · 136 阅读 · 0 评论 -
设计模式(十六):职责链模式
设计模式(十六):职责链模式定义:使多个对象都有机会处理请求,解除请求发送者和接收者的耦合。将对象连成一条链,并沿这条链传递请求直到请求被解决。请求交付给最小接受者,职责链中每一环保存后继的引用,使得请求有序沿链传递。通过合理设置后继以及分支关系,避免一个请求到了链末端依旧无法被处理,或因配置错误得不到处理的情况。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责...原创 2019-08-12 00:00:05 · 97 阅读 · 0 评论