设计模式
HoiDev
这个作者很懒,什么都没留下…
展开
-
创建型模式之工厂方法模式
工厂方法模式(Factory Method)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。构成1.很多工厂都有一些相同的行为,比如汽车工厂。我们需要抽象这些相同的行为成接口,每个工厂都实现这个接口。2.生产相同的产品每个工厂所使用的方法可能不同,所以具体如何生产产品由具体工厂实现。工厂模式两要点:1.工厂接口是工厂方法模式的核心,与调用者直接交互用来提供原创 2016-10-13 21:56:50 · 260 阅读 · 0 评论 -
结构型模式之适配器模式
适配器模式(Adapter Class/Object)是指将一个接口转换成客户端希望的另外一个接口,该模式使得原本不兼容的类可以一起工作。适配器有4种角色:1.目标抽象角色(Target):定义客户所期待的使用接口。(GVI接口)2.源角色(Adaptee):需要被适配的接口。(HDMI接口)3.适配器角色(Adapter):把源接口转换成符合要求的目标接口的设备。(HDMI-VGI转换器)4.客户原创 2016-10-13 22:16:04 · 270 阅读 · 0 评论 -
结构型模式之外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。降低访问复杂系统的内部子系统时的复杂度。在客户端和复杂系统之间再加一层,将调用顺序、依赖关系等处理好。举个例子:我们经常用的电脑,开机其实是个非常复杂的过程,而我们只需要按开机按钮就可以了。外观模式优点原创 2016-10-13 22:14:10 · 295 阅读 · 0 评论 -
结构型模式之装饰器模式
装饰器模式(Decorator)对客户透明的方式动态地给一个对象附加上更多的责任,同时又不改变其结构。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 关键: 不创建子类,扩展对象功能 1.抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。2.具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。3.装饰(Decora原创 2016-10-13 22:12:28 · 364 阅读 · 0 评论 -
创建型模式之建造者模式
建造者模式(Builder)与抽象工厂的区别:在建造者模式里,有个指导者(Director),由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造者模式可以强制实行一种分步骤进行的建造过程。建造者模式四要素:1.产品类Product:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。2.抽象建造者类Builder: 将建造的具体过程交与它的原创 2016-10-13 22:05:14 · 232 阅读 · 0 评论 -
创建型模式之抽象工厂模式
抽象工厂模式(Abstract Factory)为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。来看下抽象工厂模式的类图:类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。抽象工厂的优原创 2016-10-13 21:58:34 · 254 阅读 · 0 评论 -
行为模式之观察者模式
观察者模式(Observer)对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。构成1.抽象主题(Subject)角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。2.抽象观察者(Observer)角色:为所有具体的观察者定义一个接口原创 2016-10-13 22:18:20 · 355 阅读 · 0 评论 -
行为模式之策略模式
策略模式(Strategy)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。1.Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略,实现定义的策略。2.ConcreteStrategy:具体的策略实现,也就是具体的算法实现。3.Context:上下文,负责与具体的策略交互,通常上下文会持有一个真原创 2016-10-13 22:19:47 · 368 阅读 · 0 评论 -
行为模式之命令模式
命令模式命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。构成1、客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。2、命令(Command)角色:声明了一个给所有具体命令类的抽象接口。3、具体命令(ConcreteCommand)角色:定义一个接收者和行原创 2016-10-16 20:45:20 · 423 阅读 · 0 评论 -
设计模式之六大原则
设计模式的六大原则。 1 开闭原则 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。在软件的生命周期内,因变化、升级和维护对原有代码进行修改,可能会引入错误。所以当软件需要变化时,通过扩展软件实体的行为来实现变化,而不是修改原有代码。 2 里氏代换原则 任何基类可以出现的地方,子类一定可以出现。里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正原创 2016-10-13 22:22:31 · 354 阅读 · 0 评论 -
行为模式之模板方法模式
模板方法模式(Template Method)定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。 模板方法模式是编程中经常用到的模式,其非常简单,AbstractClass叫抽象模板,其方法分为3类:1.抽象方法:父类中只声明但不加以实现,而是定义好规范,原创 2016-10-13 22:17:17 · 291 阅读 · 0 评论