- 博客(22)
- 收藏
- 关注
原创 设计模式——享元模式
享元(Flyweight)模式:运用共享技术有效的支持大量细粒度的对象。Flyweight:享元类抽象接口;ConcreteFlyweight:实现具体享元接口,并为内部状态增加内部存储空间;UnsharedConcreteFlyweight:不被强制贡献的Flyweight;FlyweightFactory:创建并管理flyweight对象,当请求一个flyw
2017-02-05 16:31:49
177
原创 设计模式——状态模式
状态(State)模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的状态。State:状态,定义抽象接口;ConcreteState:具体状态类,每个子类实现一个Context的一个状态相关的行为;Context:定义客户感兴趣的接口,维护一个ConcreteState子类的实例,这个实例定义为当前状态;适用性:(1)一个对象
2017-02-05 16:29:17
228
原创 设计模式——备忘录模式
备忘录(Memento)模式:在不破费封装的前提下,获取一个对象的内部状态,并在对象外保存这个状态,可以将该对象恢复到原先保存的状态。Memeto:备忘录,存储原发器(Originator)对象的内部状态,管理者(Caretaker)只能看到备忘录的窄接口,它只能将备忘录传递给其他对象,原发器能看到宽接口,允许访问备忘录保存的内部数据;Originator:原发器,创建
2017-02-05 16:28:33
396
原创 设计模式——外观模式
外观(Facade)模式:为子系统的一组接口提供一个一致的界面,定义一个高层的接口,这个接口使得这一子系统更容易使用。Facade:存储所有子系统,将客户的请求代理给适当的子系统对象;Subsystem:实现子系统的功能,处理Facade对象指派的任务,不保存Facade的指针;适用性:(1)将子系统与客户与其他子系统分离,提高子系统的独立性很可移植性;
2017-02-05 16:27:04
210
原创 设计模式——观察者模式
观察者(Observer)模式:定义对象间的一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。Subject:被观察者,被观察者知道它的观察者,可以有任意多个观察者观察同一个目标,提供注册和删除观察者对象的接口;Observer:观察者,为那些在目标发生改变时需获得通知的对象定义一个更新接口;ConcreteSubject:具
2017-02-05 16:22:49
276
原创 设计模式——组合模式
组合(Composite)模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合使用户对单个对象和组合对象的使用具有一致性。Component:声明组合中对象的接口,声明一个接口用于访问和管理Component的子组件;Leaf:组合中表示叶节点对象,叶节点没有子节点,在组合中定义图元对象的行为;Composite:存储子部件,定义有子部件的那些部件的行为,
2017-02-05 16:21:16
168
原创 设计模式——适配器模式
适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能在一起工作的类可以一起工作。Target:定义Client使用的与特定领域相关的接口;Client:使用Target接口;Adaptee:一个已经存在的接口,这个接口需要被适配;Adapter:对Adaptee的接口与Target的接口进行适配;适用
2017-02-05 16:20:27
215
原创 设计模式——责任链模式
责任链(Chain of Responsibility)模式:将要处理请求的对象连成一条链,让请求沿着这条链传递,直到有一个对象处理它为止。Handler:定义一个处理请求的接口,实现后继链;ConcreteHandler:处理它所负责的请求,保存它的后继者,如果不能处理请求,则转发给后继者;Client:向链上的具体处理者(Concretehandler)对象提交
2017-02-05 16:18:39
164
原创 设计模式——命令模式
命令(Command)模式:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。Command:声明执行操作的接口;ConcreteCommand:将一个接受者对象绑定一个动作,调用接受者相应的操作,以实现Execute;Receiver:接受者,具体实施与执行一个请求;Invoker:要求该命令执行这个请
2017-02-05 16:15:40
209
原创 设计模式——原型模式
原型(Prototype)模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype:声明一个克隆自身的接口;ConcretePrototype:实现克隆自身的操作;Client:让一个原型克隆自身从而创建一个新的对象;适用性:(1)当一个系统应该独立于它的创建、构成和表示时;(2)当要实例化的类是在运行时刻指定时;
2017-02-05 16:12:41
202
原创 设计模式——代理模式
代理(Proxy)模式:为其他对象提供一种代理以控制对这个对象的访问。Subject:定义RealSubject和Proxy的共用接口;Proxy:保存一个可以访问实体RealSubject的引用,控制对实体的存取,负责创建和删除实体;RealSubjet:Proxy所代表的实体;适用性:(1)远程代理(Remote Proxy):负责对请求及其参数
2017-02-05 16:11:13
146
原创 设计模式——生成器模式
生成器(Builder):将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以场景不同的表示。Builder:创建Product对象的各个部件的抽象接口;ConcreteBuilder:实现Builder的接口,创建Product的各个部件;Product:创建的产品;Director:指导Builder的创建过程;适用范围:(1)当对象零
2017-02-05 16:10:06
279
原创 设计模式——模板方法模式
模板方法(Template Method)模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass:抽象类,实现一个模板方法,定义一个算法的骨架;定义抽象的原语操作,具体的子类重定义它们以实现一个算法ConcreteClass:具体类,实现原语操作以完成算法中特定子类的步骤;
2017-02-05 16:08:23
176
原创 设计模式——工厂方法模式
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。Product:定义工厂方法所创建的对象的接口;ConcreteProduct:工厂方法创建的具体对象,实现Product接口;Creator:工厂方法类抽象接口,FactoryMethod()函数返回一个Product对象;
2017-02-05 16:05:09
304
原创 设计模式——单例模式
单例(Singleton)模式:保证一个类仅有一个实例,并提供一个访问它的全局变量。Singleton:定义一个Instance操作,允许客户访问它的唯一实例,负责创建它自己的唯一实例。适用性:(1)当类只能有一个实例,而且客户可以很方便的访问它时;(2)唯一实例应该是可以通过子类化可扩展的,并且客户无需更改代码就能使用一个扩展的实例时;(3)创建一
2017-02-05 16:03:23
194
原创 设计模式——装饰模式
装饰(Decorator)模式:动态的给一个对象添加一些额外的职责。Component:定义一个对象接口,可以给这些对象动态添加职责;ConcreteComponent:具体实现对象,可以给这些对象动态添加职责;Decorator:定义一个与Component接口一致的接口,保存一个指向Component对象的指针;ConcreteDecorator:具体的装饰
2017-02-05 16:00:59
311
原创 设计模式——策略模式
策略(Strategy)模式:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,使得算法可独立于使用它的客户而变化。Strategy:定义所有支持的算法的公共接口,Context使用这个接口来调用ConcreteStrategy定义的算法;ConcreteStrategy:具体的策略,以Strategy接口实现某具体算法;Context:维护一个对Str
2017-02-05 15:58:14
223
原创 设计模式——访问者模式
访问者(Visitor)模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。Visitor:访问者,为该对象结构中ConcreteElement的每一个类声明一个Visit操作,使得访问者可以确定正被访问元素的具体类。这样访问者可以通过该元素的特定接口直接访问它;ConcreteVisitor:具体访问者,实现
2017-02-05 15:57:31
215
原创 设计模式——中介者模式
中介者(Mediator)模式:用一个中介者来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立改变它们之间的交互。Mediator:中介者抽象接口,定义一个接口用于与各个Colleague对象通讯;ConcreteMediator:具体中介者,存储并维护各个Colleague对象;Colleague:同事类,每个同事类都知道它
2017-02-05 15:55:27
205
原创 设计模式——抽象工厂模式
抽象工厂(Abstract Factory)模式:提供一个创建一系列相关或相互依赖对象的接口,而不需指定它们具体的类。AbstractFactory:声明一个创建抽象产品对象的操作接口;ConcreteFactory:实现创建具体产品对象的操作;AbstractProduct:一类产品对象的抽象接口;ConcreteProduct:一个被响应的具体工厂创建的具体
2017-02-05 15:53:20
213
原创 设计模式——桥接模式
桥接(Bridge)模式:将抽象部分与它是实现部分分离,使它们都可以独立的变化。Abstraction:定义的抽象类接口,关联一个Implementro对象的指针,调用该指针实现功能;RefinedAbstraction:实现抽象类定义的接口;Implementor:定义实现功能部分的抽象接口;ConcreteImplementor:实现Implemento
2017-02-05 15:51:39
235
原创 设计模式——设计模式原则
1、单一职责原则(SRP):一个类应当只有一个引起其变化的原因。使用单一职责原则的好处有:(1)类的复杂性降低;(2)可读性提高;(3)可维护性提高;(4)变更引起的风险降低;2、里氏替换原则(LSP):在使用父类的地方,可以使用其子类替换。里氏替换原则的含义:(1)子类必须完全实现父类的方法;(2)子类可以有自己的个性;(3)子类覆盖或实现父类方法时,输入参数范围可以比父类宽
2017-02-05 15:43:34
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人