摘要: 定义:原型模式(Prototype Pattern),用原型模式指定创建对象的种类,并且通过拷贝这些原型创建新的对象。类型:创建型模式。类图:参与角色:CPrototype,抽象原型基类,提供一个Clone的接口以及一些设置显示的接口。CConcretePrototype,声明定义原型的相关参数,并实现Clone接口,主要是通过实现拷贝构造函数来完成的。另外实现其他接口。Client,首先定义一个原型对象,然后以此为原型克隆新的对象。概述: 如果只是为了更快的完成新对象的生成,其实就没必要使用原型模式了。因为可以直接使用拷贝构造函数即可。而使用原型模式最重要的原因是隔离Client去了解具体的 阅读全文
posted @ 2014-01-10 15:18 飞鹤0755 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 定义: 建造者模式(Builder Pattern), 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建型模式。类图:参与角色:Product,定义了一组产品的部件,并且有一个方法来表示对象。Builder,提供一系列Product对象每个部件构成的接口。BuilderA、BuilderB通过实现父类的接口来完成产品各部分的构造。Director,构造使用Builder接口的对象。概述: 产品的不同,是由具体的构建过程不同造成的,所以把每个产品不同的地方抽象出来。这样不同产品,就不需要用派生新的产品类来完成,只需要匹配不同的构建过程类即可。Builder只是 阅读全文
posted @ 2014-01-08 20:00 飞鹤0755 阅读(602) 评论(0) 推荐(1) 编辑
摘要: 定义:单例模式(SingletonPattern),保证一个类仅有一个实例,并提供一个访问它的全局访问点。类型:创建型模式类图:概述:在很多比较大型的程序中,全局变量经常被用到。如果不用全局变量,那么在使用到的模块中,都需要用参数将全局变量传入,这是非常麻烦的。虽然要减少使用全局变量,但是如果需要,还是要用。单例模式就是对传统的全局的一种改进。单例可以做到延时实例化,即在需要的时候才进行实例化。针对一些大型的类,延时实例化是有好处的。需要注意的是,在C#,Java中,有饿汉单例模式(即在声明变量的时候就初始化)和懒汉模式(在需要使用的时候再初始化)。而在GoF的书中,只讲到了懒汉模式,这是因为 阅读全文
posted @ 2014-01-08 12:25 飞鹤0755 阅读(558) 评论(1) 推荐(0) 编辑
摘要: 定义:抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需要指定它们具体的类。类型:创建型模式。类图:参与角色: 1. FeaturePhone、SmartPhone,分别是功能手机和智能手机的两个抽象类,分别抽象出来了功能机的制造流程,智能机的制造流程。 2. NokiaFeaturePhone、SamsungFeaturePhone,分别实现了功能机的制造流程。 3. NokiaSmartPhone、SamsungSamrtPhone,分别实现了智能机的生产制造流程。 4. Factory,抽象工厂,即手机生产厂所必须具备的基本要求都... 阅读全文
posted @ 2014-01-08 00:58 飞鹤0755 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 定义:工厂方法模式(FactoryMethod Pattern),定义一个用于创建对象的接口,让子类决定实例化哪一个类。定义一个抽象工厂类,每一个产品,按照抽象工厂的基本要求新建一个工厂来生产新的产品。类型:创建型模式。类图:参与角色:AbstrctProduct,提供产品生产的标准接口。ConcreteProductA,ConcreteProductB,按接口具体去实现生产的产品。AbstractFactory,提供标准工厂规模的抽象工厂。ConcreteFactoryA,ConcreteFactoryB,按接口标准定制的具体生产产品的在厂。概述:简单工厂模式,在使用时,会违背OCP原则。工 阅读全文
posted @ 2014-01-05 01:12 飞鹤0755 阅读(176) 评论(0) 推荐(1) 编辑
摘要: 定义:简单工厂模式(Simple Factory Pattern),有一个提供接口的抽象类,然后实现不同功能的子类去实现抽象类,最后一个简单工厂类来完成对不同功能子类的创建。类型:创建型模式。类图:参与角色:抽象产品,提供接口供Client调用。具体产品,根据具体产品的要求去实现接口。工厂类,根据传入参数的不同,创建不同的产品。概述: 简单工厂模式并不是GoF的23个设计模式之中,因为简单工厂模式是工厂方法模式的一种特例。但现实中,简单工厂模式使用得非常广泛,所以在此单列出予以记录。 假设有一手机代工厂,前些年买了两条手机生产线,全部代工Nokia的手机。但是随着智能手机的崛起,Nokia手机 阅读全文
posted @ 2014-01-03 19:31 飞鹤0755 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 开闭原则(Open Closed Principle)定义:软件实体应该对扩展开放,对修改关闭。由来:一些软件生命周期很长,必然面临维护升级等变化。而新添加的代码很容易对旧有的代码造成影响,甚至给旧有的代码带来Bug。解决:当软件代码需要进行变动时,尽量以添加新的代码来完成,而不去修改原有的代码。也即通过扩展来完成所需要的功能的添加。里氏替换原则(Liskov Substitution Principle)定义:继承必须确保父类所拥有的性质在子类中仍然成立。由来:通过子类来完成父类的任务,可能会产生问题。解决:子类可以实现父类的抽象方法,但是不去Override父类的非抽象方法。这也... 阅读全文
posted @ 2014-01-03 01:36 飞鹤0755 阅读(206) 评论(0) 推荐(1) 编辑