设计模式感悟之创建型模式

创建型模式总结:

    地球(客户)需要一个大自然(产品),该大自然需要有很多动物(产品功能),很多植物(产品功能).大自然使用单例模式和抽象工厂模式的结合模式.动物和植物采用简单工厂方法模式创建.以创建动物为例:在简单工厂里遇到相同的"人",直接采用原型模式克隆,法则采用建造者模式创建.

public Animal

{

    private String mType = null;

    public Animal clone()

    {

          ...

     }

    public String getType()

    {

          return mType;

     }

}

public HumanAnimal extends Animal

{

    public static Builder()

    {

          public Build add(String part)

          {

          }

           public HumanAnimal build()

           {

             }  

     }

}

public AnimalFactory

{

    private Animal mLastAnimal = null;

    public Animal create(String type)

    {

          if(type.equals(mLastAnimal.getType))

          {

              return mLastAnimal.clone();

             }

           else

              {

                   Animal temp=null;

                   if(type.eaual("人"))

                      {

temp = new HumanAnimal.builder().add("手").add("头").add("脚").add("躯干").build();

                     }

                   ...//其它动物略

mLastAnimal = temp;

                   return temp;

             }

     }

}

private class Nature

{

    private List<Animal>  mAnimals= new ArrayList<Animal>();

    private List<Plant>     mPlants = new ArrayList<Plant>();

    private static Nature mInstance = null;

    private Nature()

     {

             mAnimals.add(AnimalFactory.create("人"));

             mAnimals.add(AnimalFactory.create("人"));

             mAnimals.add(AnimalFactory.create("狗"));

              mAnimals.add(AnimalFactory.create("草鱼"));

              ...

              mPlants.add(PlantFactory.create("喇叭花"));

mPlants.add(PlantFactory.create("桃树"));

              ...

     }

     public static Nature getInstance()

     {

          if(mInstance == null)

          {

              mInstance = new Nature();

           }

           return mInstance;

     }

     public List<Animal> getAnimals()

     {

          return mAnimals;

     }

      public List<Plant> getPlants()

     {

          return mPlants;

    }

}

时间: 2024-10-09 14:17:42

设计模式感悟之创建型模式的相关文章

设计模式(3)-对象创建型模式-Abstract Factory模式

1.对象创建型模式 1.3           Abstract Factory模式 1.3.1 需求 在下面情况能够使用Abstract Factory模式: ?  一个系统要独立于它的产品的创建.组合和表示时(这个需求和FactoryMethod类似). ?  一个系统要由多个产品系列中的一个来配置时(这个需求也和Factory Method类似). ?  当你要强调一系列相关的产品对象的设计以便进行联合使用时(这个需求表明一个工厂要创建多个相关的产品对象,是比FactoryMethod多的

天天设计模式二:创建型模式实践

天天设计模式二:创建型模式实践 创建型设计模式主要应用在对象创建,以不同的方式来满足系统的灵活性配置.动态注入.等应用场景. 一.单例模式 二.抽象工厂 三.建造者模式 四.工厂方法模式 五.原型模式

NET设计模式 第二部分 创建型模式(6):创建型模式专题总结(Creational Pattern)

创建型模式专题总结(Creational Pattern) ——.NET设计模式系列之七 Terrylee,2006年1月 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律:第一,它们都将系统使用哪些具体类的信息封装起来:第二,它们隐藏了这些类的实例是如何被创建和组织的.外界对于这些

Java设计模式之五大创建型模式(附实例和详解)

一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. (3)行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修

设计模式一:创建型模式

知识储备: 1.接口:若干抽象方法的集合 作用:限制实现接口的类必须按照接口给定的调用方式实现这些方法:对高层模块隐藏了类的内部实现. 2.面向对象设计SOLID原则 开放封闭原则:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进行扩展. 里氏替换原则:所有引用父类的地方必须能透明的使用其子类的对象. 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象.换言之,要针对接口编程,而不是针对实现编程.

设计模式学习笔记-创建型模式总结

一.总结 创建型模式抽象了实例化的过程:它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象 创建型模式将实例化委托给另一个对象. 在这些模式中有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在 一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以及何时创建这些方面给予 了我们很大的灵活性.它们允许

设计模式(4)-对象创建型模式-Prototype模式

1.对象创建型模式 1.4          Protoype模式 1.4.1需求 通过拷贝原形对象创建新的对象. 1.4.2结构 ?P r o t o t y p e(Gr a p h i c) - 声明一个克隆自身的接口. ?C o n c r e t e P r o t o t y p e(S t a ff.W h o l e N o t e.H a l fN o t e) - 实现一个克隆自身的操作. ?  C l i e n t(G r a p h i c To o l) - 让一个原

Java设计模式——单例模式(创建型模式)

概述 ??单例模式保证对于每一个类加载器,一个类仅有一个实例并且提供全局的访问.其是一种对象创建型模式.对于单例模式主要适用以下几个场景: 系统只需要一个实例对象,如提供一个唯一的序列号生成器 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例 ??单例模式的缺点之一是在分布式环境中,如果因为单例模式而产生 bugs,那么很难通过调试找出问题所在,因为在单个类加载器下进行调试,并不会出现问题. 实现方式 ??一般来说,实现枚举有五种方式:饿汉式.懒汉式.双

.NET设计模式 第二部分 创建型模式(3)—建造者模式(Builder Pattern)

建造者模式(Builder Pattern) ——.NET设计模式系列之四 Terrylee,2005年12月17日 概述 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定.如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式. 本文通过现实生活中的买