设计模式
Findway_
我的博客:lhgaaa.github.io
展开
-
Singleton模式
Singleton模式分为两种模式,懒汉模式和饿汉模式。顾名思义,懒汉模式就是在需要类的对象时再去产生对象,而饿汉模式就是在类初始化时就已经产生了一个类对象,不管我们需不需要这个对象,这个对象自始至终就在那里。 懒汉模式: 优点:可以实现延迟实例化 缺点:多线程环境下需要特殊处理、较饿汉模式有性能问题。饿汉模式: 优点:不用考虑多线程问题,也有比较好的性能 缺点:不能实现延迟实例化写法一、原创 2017-08-22 10:06:46 · 262 阅读 · 0 评论 -
Mediator(中介者)模式
Mediator(中介者)模式问题 在面向对象系统的设计和开发过程中, 对象之间的交互和通信是最为常见的情况, 因为对象间的交互本身就是一种通信。 在系统比较小的时候, 可能对象间的通信不是很多、 对象也比较少, 我们可以直接硬编码到各个对象的方法中。 但是当系统规模变大, 对象的量变引起系统复杂度的急剧增加, 对象间的通信也变得越来越复杂, 这时候我们就要提供一个专门处理对象间交互和通信的类,转载 2017-09-13 10:36:30 · 278 阅读 · 0 评论 -
工厂模式
工厂模式问题 在面向对象系统设计中经常可以遇到以下的两类问题: 1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现, 达到了多态的目的。 这里很容易出现的一个问题 n 多的子类继承自抽象基类, 我们不得不在每次要用到子类的地方就编写诸如 new ×××;的代码。这里带来转载 2017-09-13 10:56:31 · 294 阅读 · 0 评论 -
命令模式
命令模式问题Command 模式通过将请求封装到一个对象(Command) 中, 并将请求的接受者存放到 具体的 ConcreteCommand 类中(Receiver) 中, 从而实现调用操作的对象和操作的具体实现 者之间的解耦。 模式选择Command 模式的典型结构图为:Command 模式结构图中,将请求的接收者(处理者)放到 Command 的具体子类 ConcreteCommand转载 2017-09-13 11:18:55 · 287 阅读 · 0 评论 -
委托设计模式(即代理模式)
问题至少在以下集中情况下可以用 Proxy 模式解决问题: 1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成, GoF 称之为虚代理(Virtual Proxy); 2)为网络上的对象创建一个局部的本地代理, 比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出),我们将这个操纵的过程交给一个代理去完成, GoF 称之为远程代理(Remote Pro转载 2017-09-08 11:31:53 · 687 阅读 · 0 评论 -
观察者模式
问题Observer 模式应该可以说是应用最多、影响最广的模式之一,因为 Observer 的一个实例 Model/View/Control(MVC) 结构在系统开发架构设计中有着很重要的地位和意义, MVC实现了业务逻辑和表示层的解耦。 个人也认为 Observer 模式是软件开发过程中必须要掌握和使用的模式之一。在 MFC 中, Doc/View(文档视图结构)提供了实现 MVC 的框架结构(有转载 2017-09-08 14:57:38 · 175 阅读 · 0 评论