您的位置:首页 > 其它

【设计模式】对象创建—创建型模式(2)

2014-12-14 10:51 253 查看
    创建型模式共有六个,上一篇文章总结了简单工厂和工厂方法,接下来总结下其他的模式。

    【 抽象工厂】(Abstract Factory)

    抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们是具体的类。

    抽象工厂是从工厂方法升级而来,工厂方法解决了一种类型的很多分支的情况。而抽象工厂 是解决了多种类型很多分支的情况。那机房收费系统举例,机房收费系统中有很多表,我们是用sql语句写的。但是要是老板要求我们用access、Oracle、SQL三种语言实现,这时我们就需要抽象出每个表,每个表下面有三个具体类。而这些具体的类都是通过具体工厂实现的。话语解释不清楚,请看图吧!

     这样的改进还不是很完美因为在更改数据库的时候还是要去客户端去new一个新的对象,这是利用反射技术可以解决这样问题,因为反射技术把对象放到了字符串变量中,只要改变变量中的字符就可以达到跟换数据库的效果。但是这样还是要去改客户端中的代码,配置文件技术就很好的解决了这个问题。

工厂方法:



有工厂方法升级为抽象工厂:



抽象工厂的改进:

     



    【建造者模式】(Builder)

    建造者模式,将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。

    我的理解建造者模式是把构建对象的过程封装起来,最后由指挥者决定创建怎样的对象。好比麦当劳把所有制作汉堡的流程封装起来,所有的麦当劳实体店在工作人员在制作汉堡的时候都按照这样的流程来,所以制造的汉堡味道也都是一样的。

    


    【 原型模式】(Prototype)

     原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

     在原型抽象类中声明一个抽象构造方法clone,然后具体类通过重写这个方法实现自身的克隆。而克隆对于.net来说实在是太常用了,所以.NET在system命名空间中提供了ICloneable接口,其中的一个方法Clone(),可以实现原型模式。

    


    【单例模式】(Singleton)

    单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    单例模式其实就类只让实例化一次,单例模式需要注意的是多线程的问题。因为在多线程的时候一个可能同时被多个用户的访问,所以这是要用到lock语句(锁)。c#解决这多线程问题有一套自己的方法,就是运用“静态初始化”方法,其实就是生命类为sealed类型,实例化的对象为readonly类型即可。

  

    总结:创建模式用于对象的创建,所以对象创建是优先考虑这6种模式。模式的利用没有对与错,只有合适不合适。只要对象创建的合理,占用的计算机资源少,而且不违背设计模式的6个原则即可。关于设计模式自己还是处于对理论理解的阶段,对设计模式真实利用体会没有,所以在以后的编码中要多多实践。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐