一、工厂设计
1.首先观察一般程序中的问题:
interface Fruit{
public void eat();
}
class Apple implements Fruit{
@Override
public void eat() {
System.out.println("吃苹果。");
}
}
class Orange implements Fruit{
@Override
public void eat() {
System.out.println("吃橘子。");
}
}
public class Test {
public static void main(String args[]) {
Fruit f1 = new Apple();
f1.eat();
}
}
我们知道main方法实际上相当于一个客户端,此时如果想换一个子类,由苹果换成橘子,那么就需要修改main方法。那么怎么避免这个问题呢~~就是在接口和子类之间加一个过渡端,通过该客户端还获得具体是哪一个接口实例。如下:
2.使用工厂设计模式的程序
interface Fruit{
public void eat();
}
class Apple implements Fruit{
@Override
public void eat() {
System.out.println("吃苹果。");
}
}
class Orange implements Fruit{
@Override
public void eat() {
System.out.println("吃橘子。");
}
}
//工厂类
class Factory{
public static Fruit getInstance(String className) {
Fruit f =