设计模式
万里归来少年心
这个作者很懒,什么都没留下…
展开
-
设计模式 - 桥模式(Bridge)
在软件设计中,如果责任划分不清晰,需求的变化时,子类会急剧膨胀,代码会大量重复。此时,划分责任是最关键的做法。定义 将抽象部分与实现部分分离,使它们独立的变化。实例 先看下面代码存在的问题。(子类膨胀,重复代码) 在PC平台和Mobile平台分别实现文本和图片的生成和发送。 消息的基类如下:class Messager{public...原创 2020-03-12 22:18:44 · 431 阅读 · 0 评论 -
设计模式 - 装饰模式(Decorator)
在软件设计中,如果责任划分不清晰,需求的变化时,子类会急剧膨胀,代码会大量重复。此时,划分责任是最关键的做法。定义 动态的给一个对象增加职责,装饰模式比继承更加灵活。它能消除重复代码和减少子类个数。实例 先看下面代码存在的问题。(子类膨胀,重复代码) 有文件流,网络流,加密流三种数据流,而每种数据流有加密,缓冲,加密且缓冲三种操作。 数...原创 2020-03-11 21:39:29 · 149 阅读 · 0 评论 -
设计模式 - 模板方法(Template Method)
一项任务,有稳定的整体结构和多边的子步骤。可以使用模板方法(Template Method)。定义 模板方法,定义一个操作中的算法骨架,而将一些步骤延迟到子类,使得子类可以不改变一个算法的结构,但可以重定义该算法的某些特定步骤。实例 函数Run()是类库中的框架函数供外部调用。Step1() 和Step2()在类库中已经实现,Step3()需要用户在子类中实现。...原创 2020-02-02 12:19:18 · 460 阅读 · 0 评论 -
设计模式 - 策略模式(Strategy )
对象使用的算法可能经常改变,如果将这些算法都编码到对象中,将会使对象很复杂。如何在运行时根据需要选择对象的算法?策略模式提供了一种解决方案。1.模式定义 定义一系列算法,把它们一个个封装起来,并且使它们可以互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 ...原创 2018-10-13 08:47:32 · 346 阅读 · 0 评论 -
面向对象的设计原则
认识面向对象1.隔离变化 面向对象的构建方式更能适应软件的变化,将变化所带来的影响减为最小。2.各司其职 面向对象的方式更强调各个类的责任,由于需求变化导致的新增类型不应该影响原来类型的实现。3.对象是什么 从语言实现层面,对象封装了代码和数据。 从规格层面,对象是一系列公共接口。 从概念层面,对象是某种拥有责任的抽象。面向对象的设计原则1....原创 2018-08-12 20:38:07 · 189 阅读 · 0 评论 -
用委托实现Publisher类
接上文中实现的观察者模式,上文中实现读者,报纸,出版社时,类Publisher如下:public class Publisher { public string Name { get; set; } public Publisher(string name) { this.Name = name; ...原创 2018-06-03 20:12:35 · 595 阅读 · 0 评论 -
实践观察者模式
通过实现读者,出版社,报纸之间的关系,实践设计模式中的观察者模式。1.Person类 public class Person { public string Name { get; set; } public Newspaper Newspaper { get; set; } public Person(string name) ...原创 2018-06-03 19:19:55 · 303 阅读 · 0 评论 -
设计模式 - 简单工厂模式
1.Operation运算类class Operation{public: virtual double GetResult(double Num1, double Num2) { return 0; }};2.加减乘除类class OperationAdd : public Operation{ virtual double GetResult(double原创 2017-03-27 15:12:38 · 329 阅读 · 0 评论 -
设计模式 - 工厂方法模式
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。1.Operation运算类class Operation { public: virtual double GetResult(double Num1, double Num2) { return 0; } };2.原创 2017-11-30 11:20:04 · 237 阅读 · 0 评论 -
设计模式 - 观察者模式 (Observer)
(1)定义建立对象间的一种一对多依赖关系,当一个对象状态发生改变时,其相关对象皆得到通知并被自动更新。(2)应用场景 •群发信息 •消息提示(3)实现class Subject{public: Subject(); virtual ~Subject(); Obeserver *m_Obeserver; void attach(Obeserver *原创 2017-09-22 13:22:41 · 248 阅读 · 0 评论 -
设计模式 - 单例模式
设计模式、单例模式原创 2017-09-22 13:19:35 · 265 阅读 · 0 评论