Kevin-moon

学习在于分享
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

创建型模式的差异

Posted on 2008-09-03 12:53  Kevin-moon  阅读(1463)  评论(5编辑  收藏  举报

     设计模式这个已经是谈到太多的话题,不过大多都是针对单一模式,这样对理解来说,还是有点困难的.所以在这里想对创建型这类模式先做个比较!也许是自己比较笨,做了两年的项目,很早就接触了设计模式,但是直到最近,完整的看完"大话设计模式"后,才对它有完整的理解和运用.所以这里想分享下我的理解.

     创建型模式分为简单工厂模式,工厂方法模式,抽象工厂模式,单例模式,原形模式和创建者模式.每种模式已经有很多地方写到了,也讲的非常好,所以这里只分析下它们之间的用法和比较

     在面向对象编程中,最重要的就是对象,系统完全是由对象组成的,所以首先要想的就是如何创建对象,但是对象的创建有很多不同的情况,所以这就成为了一个变化点,即产生了创建型模式.

     首先讲下,简单工厂,工厂方法和抽象工厂这三种模式.它们针对的都是一系列抽象对象

      

     

     一般来说,获取"电子产品"的对象,可以直接使用new, 电子产品 eleprod = new 手机();但是如果要想到日后利于维护,可能存在的变化的时候,最好使用创建型模式.他们都是对于创建的封装.简单工厂模式是最简单的,只需要一个类来统一创建,

电子产品 eleprod = 简单工厂.GetProd();

 

     

     当需要对对象的创建需要统一管理,或者有外界因素来决定对象的创建的话,最好使用它.例如获取一个电子产品(手机,电脑还是MP3),这些是由系统外的一个配置文件确定,或者是根据某个业务条件... 但是有个"不好"的地方,它违背了"开放-封闭原则",不过这不会成为不用它的理由.

 

工厂方法模式和它的区别在于,遵循了"开放-封闭",使用起来更加麻烦点(类比较多),抽象工厂 factory = new 手机工厂();电子产品 eleprod = factory.GetProd(); 但是因为对象的创建可能用new,或外部配置(反射)...,所以就包装了这里.

 

抽象工厂模式是在工厂方法模式的基础上做的扩展,工厂方法针对的是一个抽象对象,抽象工厂针对的是一系列抽象对象.

 

单例模式和原形模式这两个应该很容易理解,针对的是单一对象(非抽象)的创建,

 

建造者模式的关注点是对象的创建步骤,当一个对象的创建过程比较多,而且这些过程可能变化的时候,

创建步骤 A = new 建造步骤A();

房子 house = 房子建造者.创建房子(A);

 

 

 

     软件的设计在于思考和积累,关注变化.以上是我目前阶段的理解,希望与大家共同学习,进步!呵呵