编写的Factory程序如下:
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃苹果");
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子");
}
}
class Factory {
public static Fruit getInstance(String className){
System.out.println(className);
if("apple".equals(className)){
return new Apple();
}
else if("orange".equals(className)){
return new Orange();
}
else {
return null;
}
}
}
public class Main1 {
public static void main(String args[]){
Fruit fruit = Factory.getInstance("apple");
//Fruit fruit = new Orange();
fruit.eat();
}
}
运行后的结果为:
分析:本程序在客户端的操作上取消了关键字new的使用,而Factory.getInftance()方法根据指定子类的标记取得接口的实例化对象,这时客户端不需要关注具体的子类,也不需要关注Factory类是怎么处理的,只需要关注如何取得接口对象并且操作。这样的设计在开发中就称为工厂设计模式。