demo1
interface IFood {
public abstract void eat();
}
class Bread implements IFood {
public void eat(){
System.out.println("吃面包~");
}
}
class Milk implements IFood {
public void eat(){
System.out.println("喝牛奶");
}
}
/**
* 获取IFood接口实例对象,利用此方法对外隐藏子类;由于Factory没有属性,所以定义static方法
* @return 存在指定标记返回对应子类实例,否则返回null;
*/
class Factory {
public static IFood getInstance(String className){
if("bread".equals(className)){
return new Bread();
} else if("milk".equals(className)){
return new Milk();
} else {
return null;// 没有匹配返回null
}
}
}
public class HelloWorld {
public static void main(String args[]){
IFood food = Factory.getInstance("bread");// 通过工厂获取实例
food.eat();
}
}
- 如果在日后进行子类扩充的时候,只需要修改Factory程序类即可实现。