标签:term 简单 which ant track csdn imp 苹果 new
设计模式(Design pattern)是一套被重复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更easy被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的。设计模式使代码编制真正project化。设计模式是软件project的基石脉络。如同大厦的结构一样。
简单工厂(Simple Factory)是类的创建者,又叫静态工厂方法(Static Factory Method)。简单工厂是由一个工厂对象决定创建出纳一种产品类的实例。
第一个学习简单工厂是由于这是最主要的创建模式。学习好简单工厂有利于我们学好工厂方法。
我们以农场公司为样例,专门向市场销售各类水果。在这个系统里面须要描写叙述下列水果
水果和其它的植物有非常大的不同。水果终于是能够食用的。
那么一个自然的做法就是就是建立一个各种水果都适用的接口,以便和农场里的其它植物区分开来。
水果的接口(interface)规定全部的水果必须实现的接口,包含不论什么水果必须具备的方法。
PS: 不知道什么是接口的去看Java教材,接口就是Fruit的抽象方法,类似C++的虚函数
水果接口的源码:
Public interface Fruit
{
//生长
void grow();
//收获
void harvest();
//种植
void plant();
}描写叙述苹果类的类图例如以下
Apple类是水果类的一种,因此它实现了水果接口所声明的全部方法。另外,因为苹果是多年生的植物。因此多出一个treeAge性质,用来描写叙述苹果树的年龄。
public class Apple implements Fruit
{
private int treeAge;
//生长
public void grow()
{
log(“Apple if growing...”);
}
//收获
public void harvest()
{
log(“Apple has been harvest.”)
}
//种植
public void plant()
{
log(“Apple has been planted.”)
}
//辅助方法
public static log(String msg)
{
System.out.println(msg);
}
//树龄取值方法
public int getTreeAge()
{
return treeAge;
}
//树龄的赋值方法
public int setTreeAge(int treeAge)
{
this.treeAge=treeAge;
}
}葡萄和草莓类和苹果类类似,这里就不一一给出了。
农场的园丁(在这里作为简单工厂)也是系统的一部分。自然要由一个合适的类来代表。这个类就是FruitGardener类,其结构如图所看到的
FruitGardener会依据client的要求,创建出不同的水果对象,如苹果(Apple).
园丁类的代码例如以下
public class FruitGardener
{
//简单工厂
public static Fruit factory(String which)
{
if(which.equalsIgnoreCase(“Apple”))
{
return new Apple;
}
if(which.equalsIgnoreCase(“strawberry”))
{
return new strawberry;
}
if(which.equalsIgnoreCase(“grape”))
{
return new grape;
}
}
}4、简单工厂的结构
简单工厂涉及到工厂角色、抽象产品角色和详细产品角色等三个角色:
工厂类源码
public class Creator
{
//简单工厂
public static Product factory()
{
return new ConcreteProduct();
}
}抽象产品源码
public interface Product
{
}详细产品
public class ConcreteProduct implements Product
{
public ConcreteProduct(){}
}标签:term 简单 which ant track csdn imp 苹果 new
原文地址:http://www.cnblogs.com/yangykaifa/p/7061503.html