面向对象设计模式之创建型

1.创建型设计模式简述:  

创建型软件设计模式是解决对象创建机制的设计模式。       

创建型软件设计模式的目标是将一个系统与其对象的创建、组合、表示分离开来,其目的是在哪个对象被创建、谁负责创建对象、怎样创建对象、何时创建对象方面增强灵活性。

创建型软件设计模式的两个主导思想,封装了系统使用的具体类的知识,及隐藏这些具体类的实例被创建与结合的细节。

型软件设计模式的几种方法:

2. 创建型模式的几种方法:

     首先是工厂,工厂的意义在于实现了  责任分离

     (1) 简单工厂

           将创建对象的方法从主方法中分离出来,由另外一个类来封装对象的创建工作(该类就是 工厂类)。然后将类的选择和对象的创建封装在一个方法(工厂方法)中,再将这个方法封装到工厂类中。

        个人理解:将所有的产品继承一个公共接口;设计一个工厂类,内含接口的对象,设计一个工厂方法,能够实现为此对象附上 不同产品,并返回。

         优点:需求与实现分开(责任分离)    简化判断;

         缺点:不满足开闭原则;    简单工厂只是一个简单的类无法成为一个层次的类。(与工厂方法比较即可明白)

  (2)工厂方法

         为了满足 开闭原则  对简单工厂进行改变,将单一的工厂类改写成一个层次的类来解决。首先需要一个接口作为超类(所有工厂的超类),名为creator  ,接口内有方法factory()(需要实现的工厂方法);然后可以用和产品类相同的结构生产创建者结构(继承creator),分别命名creatorA  creatorB等,各自负责生产相应的产品对象如productA .productB等~

      个人理解:将工厂类以及子类层次化后,实现了开闭原则。并且在出现错误时候,只需要修改局部代码即可。

     优点:符合开闭原则     每个产品都对应相应的工厂。

(3)抽象方法

      当遇到一系列有关联的产品类并且这些产品类具有相同的结构,如果用工厂方法容易结构复杂。

        突然发现这个链接 http://blog.youkuaiyun.com/zhengzhb/article/details/7359385/ 抽象模式讲得很清楚啊。

      添加一些

          可以将产品和产品族等级结构画成一个二维表  方便理解。

         注意抽象模式  再另外添加一个 等级结构  和  在原来的等级结构里加一个产品族时  是否都满足开闭原则。

   

工厂模式完了以后说一下单例模式:

    单例模式为了确保一个类只有一个唯一的实例,并且提供一个全局的访问点(所有访问这个类的只能访问这个实例)。

   并且单例模式在单线程模式和多线程模式下处理方式也不一样。

  单线程模式下 单例模式  :

      将该类的构造方法变为私有方法 ,然后该类必须提供一个可以获得实例的方法,通常称为  getInstance方法。该方法返回一个该类的实例,该类必须是静态方法,否则客户将无法调用到此方法。同时在getInstance方法中需要添加一些判断条件,使其能保证该实例唯一。

  多线程模式下 单例模式 :

    可以使用java程序中同步(synchronized)机制。在程序中可以将getInstance()声明为static synchronized类型。

synchronized类型下,程序规定每个执行该方法的线程必须彻底执行完毕以后,才能允许第二个线程执行,从而确保了唯一性。    


发现一个对单例模式讲得很清楚的链接:

 http://blog.youkuaiyun.com/jason0539/article/details/23297037

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值