参考:
简单工厂模式和工厂方法模式:http://blog.csdn.net/jason0539/article/details/23020989
抽象工厂模式:http://blog.csdn.net/jason0539/article/details/44976775
抽象工厂模式与工厂方法模式的区别:http://blog.csdn.net/liruikqn/article/details/12888511
百度百科(感觉区分工厂方法和抽象工厂模式有点问题...)
http://baike.baidu.com/link?url=lJAWWdHY5CeRkiqfvim7Q4sWUvjOR4SlszIiotxzAfZWMDX6_FdfHdjMtRpRSLm2D54R98CkUYKcYfSSkXnBuYXqMdKcX-wlO1H1cXI8IOWTX0gNIxhbvnSNFMssaEwW
工厂模式可以分为3类:但其实简单工厂模式可以算作工厂方法模式
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂模式可以分为3类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
我的理解:
简单工厂模式:
Sample320和Sample523都实现了ISample 接口,或者继承自ISample类
public
class
Factory{
public
static
ISample creator(
int
which){
if
(which==
1
)
return
new
Sample320();
else
if
(which==
2
)
return
new
Sample523();
}
}
工厂方法模式:
简单工厂模式是把产品抽象成一个接口(320和523都是bwm)。
工厂方法模式就是在简单工厂模式的基础上把工厂也抽象一下。(总公司只建不同的厂(分别生成320.523)的实例,具体生成bwm车交给更下一级的工厂去实现)
产品类:
- abstract class BMW {
- public BMW(){
- }
- }
- public class BMW320 extends BMW {
- public BMW320() {
- System.out.println("制造-->BMW320");
- }
- }
- public class BMW523 extends BMW{
- public BMW523(){
- System.out.println("制造-->BMW523");
- }
- }
创建工厂类:
- interface FactoryBMW {
- BMW createBMW();
- }
- public class FactoryBMW320 implements FactoryBMW{
- @Override
- public BMW320 createBMW() {
- return new BMW320();
- }
- }
- public class FactoryBMW523 implements FactoryBMW {
- @Override
- public BMW523 createBMW() {
- return new BMW523();
- }
- }
- public class Customer {
- public static void main(String[] args) {
- FactoryBMW320 factoryBMW320 = new FactoryBMW320();
- BMW320 bmw320 = factoryBMW320.createBMW();
- FactoryBMW523 factoryBMW523 = new FactoryBMW523();
- BMW523 bmw523 = factoryBMW523.createBMW();
- //我的理解
- BMW bwm523 = new FactoryBMW523().createBMW();
- BMW bwm320 = new FactoryBMW320().createBMW();
- }
- }
抽象工厂模式:
每个具体工厂可以生产多种产品就是抽象工厂模式,如果只能生产一种产品就是工厂方法模式。
http://blog.csdn.net/liruikqn/article/details/12888511