码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之“创建型模式”

时间:2014-12-08 14:02:13      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:设计模式   结构   工厂模式   对象   技术   

    创建型模式主要分为五大模式,分别为:抽象工厂模式、建造者模式、工厂方法模式、原型模式、单例模式。


抽象工厂模式

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

一、优点
    1、易于交换产品系列。
    2、它让具体的创建实例过程与客户端分离。

二、反射
    Assembly.Load("程序集名称").CreateInstance("命名空间.类名称")需要在程序顶端写上using System.Reflection;来引用Reflection所有用简单工厂的地方,都可以考虑用反射技术去除switch 或if,解除分支判断带来的耦合。


建造者模式

    1、将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    2、用户只需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需知道了。

一、使用对象
    主要是用于创建一些复杂的对象,这些对象内部构造间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。


工厂方法模式

    定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。做扩展。


原型模式

    1、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
    2、是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节。
    
一、克隆
    1、隐藏了对象创建的细节,又对性能是大大的提高。
    2、不用重新初始化对象,而是动态地获得对象运行时的状态。

二、MemberwiseClone()
    如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。

三、浅复制
    被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。

五、深复制
    把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。

六、DataSet中的Clone()方法和Copy()方法
    1、Clone():用来复制DataSet的结构,但不复制DataSet的数据,实现了原型模式的浅复制。 
    2、Copy():不但复制结构,也复制数据,其实就是实现了原型模式的深复制。


单例模式

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。它可以保证没有其它实例可以被创建,并且他可以提供一个访问该实例的方法。

一、实用类与单例模式的区别
    1、实用类不保存状态,仅提供一些静态方法或静态属性让你使用,而单例类是有状态的。
    2、实用类不能用于继承多态,而单例虽然实例唯一,却是可以有子类来继承。
    3、实用类只不过是一些方法属性的集合,而单例却是有着唯一的对象实例。


小结:

    创建者模式是构建各个部分并且负责将其组织起来,关注的问题是:创建什么(WHAT)、谁创建(WHO)、怎么创建(HOW)、何时创建(WHEN),以此为开发方面提供很大的灵活性!

设计模式之“创建型模式”

标签:设计模式   结构   工厂模式   对象   技术   

原文地址:http://blog.csdn.net/zygyl/article/details/41801897

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!