设计模式
fox1987
这个作者很懒,什么都没留下…
展开
-
设计模式的原则
单一职责原则(Single Responsibility Principle,SRP)定义:There should never be more than one reason for a class to change.即有且只有一个原因引起类的变更。即类要提供的功能尽可能简单明确。其意义如下:降低类的复杂性,实现的职责具有清晰的定义提高可读性提高可维护性降低原创 2013-08-08 08:30:20 · 632 阅读 · 0 评论 -
十一、结构模式之享元(Flyweight)模式
什么是享元模式享元模式是对象的结构模式,是运用共享技术来有效的支持大量细粒度的对象。享元对象能做到共享的关键是区分内蕴状态和外蕴状态。一个内蕴状态是存储在享元对象内部,并且是不会随环境改变而有所不同的,因此一个享元可以具有内蕴状态并可以共享。一个外蕴状态是随环境改变而改变的、不可以共享的状态。享元的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态原创 2013-09-25 11:12:07 · 700 阅读 · 0 评论 -
十、结构模式之代理(Proxy)模式
什么是代理模式代理模式,为其他对象提供一种对象以控制对这个对象的访问。代理模式的结构图如下:(源自大话设计模式) Subject:定义了RealSubject和Proxy的公共接口,这样在任何使用RealSubject的地方都可以使用Proxy代理模式就是在代理类中持有RealSubject的对象句柄,这样调用接口时,都执行RealSubject的对应方法,以达到封装内原创 2013-09-25 08:58:55 · 709 阅读 · 0 评论 -
九、结构模式之装饰(Decorator)模式
装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展。装饰模式结构图如下:其包含的角色就分为:抽象构建角色Component:给出一个抽象结构,以规范准备接受附加责任的对象。具体构建角色Concrete Component:定义一个将要接受附加责任的类。装饰角色Decora原创 2013-09-08 11:07:08 · 730 阅读 · 0 评论 -
八、结构模式之组合(Composite)模式
组合模式属于对象的结构模式,有时又叫做部分-整体模式,组合模式将对象组织到树结构中,可以用来描述整体与部分的联系。其可以使客户端将单纯元素和组合元素同等对待。当需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式了。组合模式(或叫合成模式)是将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用原创 2013-09-06 22:18:08 · 737 阅读 · 0 评论 -
七、结构模式之-适配器(Adapter)模式
适配器模式是一种结构模式。所谓结构模式是指将类或者对象结合在一起形成更大的结构。结构模式又分为类的结构模式和对象的结构模式。类的结构模式就是通过使用继承把类和接口等结合在一起,已形成更大的结构。当一个类从父类继承并实现接口时,这个新的类就把父类的结构和接口的结构结合起来了。类的结构模式是静态的(就是由开始的继承结构决定了结构模式的结构)。一个类的结构模式的典型例子就是类形式的适配器模式。对象的原创 2013-09-06 17:57:48 · 740 阅读 · 0 评论 -
六、创建模式之原型(Prototype)模式
原型模式是对象的创建模式,通过给出一个原型对象来指明所要创建的对象的类型。然后用复制这个原型对象的方法来创建出更多同类型的对象。原型模式可以不用重新初始化对象,而动态的获取对象运行时的状态。使用原型模式需要注意浅复制和深复制的问题。即如果字段是值类型的,那么逐位复制是可以的。但是如果是引用类型或者指针,那么复制的对象和和原来对象都指向同一对象,即只有一份副本。 浅复制:被复制的对象所含有的原创 2013-09-06 15:22:24 · 688 阅读 · 0 评论 -
五、建造(Builder)模式
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 在有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没有赋值之前,另一个性质则无法赋值。这样情况使得性质本身的建造涉及 到复杂的业务逻辑。建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造原创 2013-08-08 08:30:31 · 787 阅读 · 0 评论 -
三、抽象工厂(Abstract Factory)模式
抽象工厂也是类的创建模式。抽象工厂面对的是多个产品等级结构的系统设计。而工厂方法模式针对的是一个产品等级结构。 该模式在增加新的产品族时:只需要在每个产品等级下面增加一个具体的产品角色即可。只需要对应的增加新的具体工厂类即可,是满足“开闭”原则的。 当模式在增加新的产品等级时:就需要修改工厂角色的接口,为其增加一个新的工厂方法。因此所有的工厂角色都需要修改,需要为每个工厂类都增加一个新的原创 2013-08-08 08:30:27 · 753 阅读 · 0 评论 -
四、单例(Singleton)模式
单例模式是对象的创建模式。其确保一个类只有一个实例。完成类的实例化,并向整个系统提供这个实例。 单例模式的要点有三个 只能有一个实例 自行创建这个实例 向整个系统提供这个实例 单例类实现上又包括饿汉式单例类和懒汉式单例类 饿汉式单例类 类初始化时进行实例化 懒汉式单例类 在第一次调用的时候实例化原创 2013-08-08 08:30:29 · 679 阅读 · 0 评论 -
二、工厂方法(Factory Method) 模式
工厂方法模式是类的创建模式,又叫虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 该模式中,核心的工厂类不再是负责所有的产品创建,而是将具体创建的工作交给具体子类去做。 即提供一个抽象的接口工厂类。针对不同的产品从抽样的接口工厂类实现对应的产品工厂类。工厂类和产品类一一对应。 工厂方法模式添加新的产品,只需要对应的向系统中原创 2013-08-08 08:30:25 · 769 阅读 · 0 评论 -
一、简单工厂(Simple Factory)模式
简单工厂模式是类的创建模式,又叫做静态工厂方法模式(Static Factory Method)模式。由工厂对象决定创建出哪一种产品类的实例。 对简单工厂来说,增加一个新产品是一个痛苦的过程。工厂角色需要知道每一种产品,如何创建他们,以及何时向客户端提供他们。即增加新的产品 意味着需要修改这个工厂角色的源代码。 一个使用简单工厂的代码示例如下: 1: //原创 2013-08-08 08:30:22 · 715 阅读 · 0 评论 -
十二、结构模式之门面(Facade)模式
什么是门面模式门面模式(也有翻译为外观模式)是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面进行。其为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。其结构图如下所示(源自大话设计模式)为一个复杂子系统提供一个简单接口子系统往往因为不断演化而变得越来越复杂,使用门面模式可以使得子系统更具可复用性。Fa原创 2013-09-27 14:36:09 · 926 阅读 · 0 评论