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