一个造生产水果的工厂接口---FruitFactory.java
package fu.innerClass;
public interface FruitFactory {
public Fruit getFruit();
}
水果接口:Fruit
代码如下:
package fu.innerClass;
public interface Fruit {
public void say();
}
两个具体的水果,一个Apple,一个Orange
Apple.java
package fu.innerClass;
public class Apple implements Fruit {
private Apple(){};//私有构造方法,这样做是为了不被new出来
public void say() {
System.out.println("我是苹果");
}
经典之处,每个具体的水果提供一个生产自己的工厂
public static FruitFactory factory=new FruitFactory(){
public Fruit getFruit(){
return new Apple();
}
};
}
Orange.java
package fu.innerClass;
public class Orange implements Fruit {
private Orange(){};
public void say() {
System.out.println("我是橘子");
}
和上面Apple一样的
public static FruitFactory factory=new FruitFactory(){
public Fruit getFruit(){
return new Orange();
}
};
}
测试类
package fu.innerClass;
public class Util {
public static void main(String[] args){
Fruit fruit= recieveFactory(Apple.factory);
fruit.say();
Fruit fruit2=recieveFactory(Orange.factory);
fruit2.say();
}
该方法很重要,接受一个具体水果的工厂作为参数,返回值为Fruit引用
public static Fruit recieveFactory(FruitFactory factory){
return factory.getFruit();//根据传入的工厂,返回具体水果
}
}