package cn.Designpattern;
public class Factory {
public static void main(String[] args) {
Fruit fruit=Factory1.getInstance("orange");
fruit.eat();
}
}
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 Factory1{
public static Fruit getInstance(String className) {
if("apple".equals(className)) {
return new Apple();
}
if ("orange".equals(className)) {
return new Orange();
}
return null;
}
}
- 根据参数的内容实例化不同的子类,参数类型为"apple",实例化的是Apple类,参数类型内容为”orange",则实例化的是orange类,即输出的内容也不同
- 这样一来,如果有更多的Fruit接口子类出现,只要修改Factory类即可;即:所有接口对象都通过Factoy类取得,在程序员自己开发的代码中,只要遇见取得接口对象实例的操作,都应该采用工厂设计模式