由于本人缺乏工作经验,本篇文章作为随笔,只是对工厂模式有一个简单的认识
工厂模式分为以下三种:
1:简单工厂(Simple Factory)。
2:工厂方法(Factory Method)。
3:抽象工厂(Abstract Factory)。
本次模拟的是第三种——抽象工厂
抽象工厂的大致思路
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
好了,不多说,根据上面的思路来贴一下部分代码
在这里,我是以汽车、食物两种类别来进行模拟
汽车——宝马、奔驰
食物——苹果、橘子
首先编写食物类,在这里,我将Food作为抽象类(也可作为接口)
public abstract class Food { public abstract void eat();
}
汽车也一样
public abstract class Car { public abstract void creat();
}
然后将,宝马,奔驰继承Car ,橘子,苹果继承食物
public class Apple extends Food{ public Apple() {
super();
this.eat();
}
@Override
public void eat() {
System.out.println("Apple...eat"); } }
public class Benz extends Car{ @Override
public void creat() {
System.out.println("benz...creat");
} }
public class Orange extends Food{ @Override
public void eat() {
System.out.println("Orange...eat");
}
public class BMW extends Car{ @Override
public void creat() {
System.out.println("BMW...creat");
} }
然后,下一个思路就是将工厂分为A和B 实现分类显示的功能,在这里我将Apple和BMW作为FactoryA ,Orange和Benz作为FactoryB
并且,将FactoryA和FactoryB实现Factory的接口以实现分类的效果
public class Factory1 implements Factory {
public Car creat() {
return new Benz();
}
public Food eat() {
return new Apple();
} }
至此,以达到需要的效果
当调用FactoryA时,控制台打印出Apple,BMW
当调用FactoryA时,控制台打印出Orange,Benz
声明:本篇文章理解于 http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html的思路,但其中也融合了本人的思路。
如有其他意见,请评论版上评论,谢谢