工厂方法的模式是一个创建新性的模式,它定义了一个抽象类,由其子类来决定是否实例化哪个类。当一个类无法知道创建具体的类的时候或者必须要由子类来指定具体示例化的时候,我们可以用工厂方法的模式。
1:创建一个抽象类“水果”:
2:创建具体的类“苹果”
2:创建具体的类“香蕉”
3:创建FruitFactory抽象类,此类是作为产生水果实例的工厂类,这里我们用参数类决定具体产生什么样的实例。
4:测试类,这里必须制定必须的参数以指定产生什么样的实例。
1:创建一个抽象类“水果”:
abstract class Fruit()
{
public String name;
public Fruit(String aName)
{
name = aName
}
public abstract efficacy();
public abstract stamp();
}
2:创建具体的类“苹果”
class apple extends Fruit()
{
public Apple(String aName)
{
super(aName);
}
public void efficacy()
{
System.out.println("我是个苹果,我的功效是...")
}
public void stamp()
{
System.out.println("我是个苹果,我的特征是...")
}
}
2:创建具体的类“香蕉”
class banana extends Fruit()
{
public Banana(String aName)
{
super(aName);
}
public void efficacy()
{
System.out.println("我是个香蕉,我的功效是...")
}
public void stamp()
{
System.out.println("我是个香蕉,我的特征是...")
}
}
3:创建FruitFactory抽象类,此类是作为产生水果实例的工厂类,这里我们用参数类决定具体产生什么样的实例。
abstract class FruitFactory()
{
private FruitFactory()
{
}
public static Fruit factoryMethod(String aName,String aType)
{
if(aType.equals("apple"))
return new Apple(aName);
else if (aType.equals("banana"))
return new Banana(aName)
}
}
4:测试类,这里必须制定必须的参数以指定产生什么样的实例。
class Main
{
public static void main(String[] args)
{
Fruit fruit1=fruitFactory.factoryMethod("Apple","apple");
Fruit fruit2=fruitFactory.factoryMethod("Banana","banana");
fruit1.efficacy();
fruit1.stamp();
fruit2.efficacy();
fruit2.stamp();
}
}