设计模式
巫巫巫政霖
往后余生,愿彼此都能安好
展开
-
代理模式
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何原创 2015-10-15 09:12:06 · 512 阅读 · 0 评论 -
工厂模式(6)
工厂模式的定义:在现实生活中,如同工厂生产产品,3D打印机打印模型一样。对象的创建通过工厂类来产生。根据实现的模式不同,工厂模式又分为3中:简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为工厂方法模式:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类抽象工厂模式:定义了一个接口用于创建相关或有依赖原创 2016-03-11 21:31:07 · 458 阅读 · 0 评论 -
命令模式(5)
命令模式定义:将请求,命令,动作等封装成对象,这样可以让项目使用这些对象来参数化其他对象。是的命令的请求者和执行者解耦。以下是一个遥控器的例子,如果按照传统OO思想,我们一般会直接让遥控器去调用硬件提供的API,但是这种写法,会导致遥控器与特定的硬件API强耦合。当我们的需要接入新的设备,修改按钮所绑定硬件命令,这时候就会相当不便。我们有个准则是,原来已经测试好的代码,尽量不去原创 2016-03-11 13:06:23 · 407 阅读 · 0 评论 -
单例模式(4)
单例模式的定义:类只有一个全局对象,构造函数私有化,提供一个对外获取单例对象的方法。对于打印机,数据库连接池这些对象,全局应该仅有一个对象对应着一个实体。代码示例如下:12345678910111213141516原创 2016-03-10 13:33:39 · 368 阅读 · 0 评论 -
装饰者模式(3)
装饰者模式定义:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性。现实中,装饰者模式就像一个快递。我们购买的东西,需要经过一层一层的包裹,确保稳妥之后才被寄出。如果按照传统的面向对象,每包裹一层就需要设计一个新类,这将会导致类爆炸。还有一个例子就是,我们所喝的咖啡,假设有N种调料,M中原始咖啡豆,它们组合成的咖啡无数种,很明显,我们不可能为每种可能都建立一个类。原创 2016-03-10 10:46:07 · 413 阅读 · 0 评论 -
策略模式(1)
策略模式定义:分别封装行为接口,实现算法族,超类里放行为接口的对象,在子类里具体设定行为对象。原则就是,分离变化部分,封装接口,基于接口编程各种功能。此模式让行为算法的变化独立于算法的使用者。 策略模式注意点:分析项目中的变化部分与不变部分多用组合少用继承;用行为类组合,而不是行为的继承。更有弹性案例1:在三国杀里面,我们每个原创 2016-03-09 09:16:04 · 656 阅读 · 0 评论 -
观察者模式
观察者模式定义:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Oberver变化。观察者模式就像小时候的订牛奶业务奶站:相当于Subject,负责订奶家庭的登记,派送,退订工作用户:相当于Oberver,订奶家庭Subject:负责用户的登记注册,移除和通知Ob原创 2016-03-09 12:22:14 · 387 阅读 · 0 评论 -
适配器模式(9)
适配器模式定义:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容。现实中的例子:电源适配器(充电器)。由于设备的不同,输入电流电压有不同的标准,但是我国的家用电压是220V标准,所以需要经过电源适配器对电流电压进行转换才能安全充电。适配器模式有两种形式:对象适配器:适配器实现(implement)目标接口,且适配器类中有被适配对象的引原创 2016-03-16 19:54:46 · 687 阅读 · 0 评论 -
外观模式(8)
外观模式:提供一个统一的接口,来访问子系统中的一群功能相关接口。外观模式定义了一个高级接口,让子系统更容易使用。类图如下:例子:一个家庭影院系统,当点击准备按钮,投影仪,音响,灯光就会打开;当点击开始播放,灯光系统就会关闭;当点击暂停,灯光系统就会打开;当点击关闭,投影仪,音响,幕布就会关闭,灯光点亮。诸如此类,通过提供一个高层接口,来实现子系统的一群相关接原创 2016-03-15 19:00:34 · 417 阅读 · 0 评论 -
模板模式(7)
模板模式定义:封装了一个算法步骤,并允许子类为一个或多个步骤方法提供实现。模板模式可以使子类再不改变算法结构的情况下,重新定义算法中的某些步骤。类图如下:说明:模板模式就好比我们生活中的做菜,做菜的步骤是一定的:准备食材-》烹饪-》加佐料-》上桌,我们将做菜通用步骤抽象成父类,父类有一个统筹模板算法步骤的函数以及多个步骤方法,具体做什么菜则是继承原创 2016-03-15 17:46:09 · 563 阅读 · 0 评论