public interface Fruit {
public void show();
}
package 抽象工厂模式;
public abstract class Apple implements Fruit{
public abstract void show();
}
package 抽象工厂模式;
public abstract class Banana implements Fruit {
public abstract void show();
}
package 抽象工厂模式;
public class SouthFactory implements FruitFactory{
public Apple getApple() {
// TODO 自动生成的方法存根
return new SouthApple();
}
public Banana getBanana() {
// TODO 自动生成的方法存根
return new SouthBanana();
}
}
package 抽象工厂模式;
public class NorthBanana extends Banana{
public void show() {
// TODO 自动生成的方法存根
System.out.println("北方的香蕉");
}
}
package 抽象工厂模式;
public class SouthApple extends Apple{
public void show() {
// TODO 自动生成的方法存根
System.out.println("南方的苹果");
}
}
package 抽象工厂模式;
public class SouthBanana extends Banana{
public void show() {
// TODO 自动生成的方法存根
System.out.println("南方香蕉");
}
}
//以上步骤是设计产品族以及由不同的产品族产生产品
package 抽象工厂模式;
public interface FruitFactory {
//创建生产Apple
public Apple getApple();
//生产Banana
public Banana getBanana();
}
package 抽象工厂模式;
public class SouthFactory implements FruitFactory{
public Apple getApple() {
// TODO 自动生成的方法存根
return new SouthApple();
}
public Banana getBanana() {
// TODO 自动生成的方法存根
return new SouthBanana();
}
}
package 抽象工厂模式;
public class NorthFactory implements FruitFactory{
public Apple getApple() {
// TODO 自动生成的方法存根
return new NorthApple();
}
public Banana getBanana() {
// TODO 自动生成的方法存根
return new NorthBanana();
}
}
package 抽象工厂模式;
public class TestFruitMain {
public static void main(String[] args) {
FruitFactory north_factory=new NorthFactory();//抽象工厂 具体工厂 北方工厂的具体化
Apple north_apple=north_factory.getApple(); //抽象水果 具体水果通过具体工厂产生
Banana north_banana=north_factory.getBanana();
north_apple.show();
north_banana.show();
//增加具体的工厂类
//简单工厂模式
//抽象工厂模式
FruitFactory south_factory=new SouthFactory();//南方工厂的具体化
Apple south_apple=south_factory.getApple();//由具体的南方工厂产生具体的南方水果
Banana south_banana=south_factory.getBanana();//产生具体的南方香蕉
south_apple.show();
south_banana.show();
}
}