码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-06 17:16:14      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

创建型模式总结:

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

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;

    }

}

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

标签:

原文地址:http://www.cnblogs.com/try-catch/p/4482254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!