设计模式之创建性模式

来源:互联网 发布:servlet获取复选框数据 编辑:程序博客网 时间:2024/05/17 05:10

前言:

  设计模式是面向对象技术的最新进展之一。由于面向对象设计的复杂性,我们都希望能做出应对变化,提高复用的设计方案,而设计模式就能帮我们做到这样的结果。而设计模式又分为三类即创建型模式、结构型模式以及行为型模式。在这里先对创建型模式做个简单的总结,希望大家能指出不足之处。

      

      创建型模式就是用来创建对象的模式,抽象了实例化的过程。所有的创建型模式都有两个共同点。第一,它们都将系统使用哪些具体类的信息封装起来;第二,它们隐藏了这些类的实例是如何被创建和组织的。创建型模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。

  • 单例模式:解决的是实例化对象的个数的问题,比如抽象工厂中的工厂、对象池等,除了Singleton之外,其他创建型模式解决的都是 new 所带来的耦合关系。
  • 抽象工厂模式:创建一系列相互依赖对象,并能在运行时改变系列。
  • 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂模式使一个类的实例化延迟到其他子类。
  • 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
  • 原型模式:通过拷贝原型来创建新的对象。

  

      下面详细介绍下它们。

单例模式

单例模式指的是确保某一个类只有一个实例,并提供一个全局访问点。解决的是实体对象个数的问题,而其他的建造者模式都是解决new所带来的耦合关系问题。其实现要点有:

  • 类只有一个实例。问:如何保证呢?答:通过私有构造函数来保证类外部不能对类进行实例化
  • 提供一个全局的访问点。问:如何实现呢?答:创建一个返回该类对象的静态方法

工厂方法模式

   工厂方法模式指的是定义一个创建对象的工厂接口,由其子类决定要实例化的类,将实际创建工作推迟到子类中。它强调的是”单个对象“的变化。其实现要点有:

  • 定义一个工厂接口。问:如何实现呢?答:声明一个工厂抽象类
  • 由其具体子类创建对象。问:如何去实现呢?答:创建派生于工厂抽象类,即由具体工厂去创建具体产品,既然要创建产品,自然需要产品抽象类和具体产品类了。

抽象工厂模式

   抽象工厂模式指的是提供一个创建一系列相关或相互依赖对象的接口,使得客户端可以在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象,强调的是”系列对象“的变化。其实现要点有:

  • 提供一系列对象的接口。问:如何去实现呢?答:提供多个产品的抽象接口
  • 创建多个产品族中的多个产品对象。问:如何做到呢?答:每个具体工厂创建一个产品族中的多个产品对象,多个具体工厂就可以创建多个产品族中的多个对象了。

建造者模式

   建造者模式指的是将一个产品的内部表示与产品的构造过程分割开来,从而可以使一个建造过程生成具体不同的内部表示的产品对象。强调的是产品的构造过程。其实现要点有:

  • 将产品的内部表示与产品的构造过程分割开来。问:如何把它们分割开呢?答:不要把产品的构造过程放在产品类中,而是由建造者类来负责构造过程,产品的内部表示放在产品类中,这样不就分割开了嘛。

原型工厂模式

   原型模式指的是通过给出一个原型对象来指明所要创建的对象类型,然后用复制的方法来创建出更多的同类型对象。其实现要点有:

  • 给出一个原型对象。问:如何办到呢?答:很简单嘛,直接给出一个原型类就好了。
总结:

这只是我对创建型模式的一些个人的理解,希望大家能够提出不足之处。



0 0