工厂方法模式

简单工厂有一个缺点:违背了开闭原则,可以使用工厂方法模式来解决,但是类的数目是明显的增加了。

1.工厂方法模式:使用工厂限定方法,每一种需要创建对象都需要创建一个工厂,并且需要实现此工厂方法,在工厂中创建出对象。

2.代码实现:

  案例说明,需要创建两种车的市里,我们首先创建车的类,具体车的类实现车这个接口类。

package kw.test.gcXXX;

public interface Car {
    public void run();
}

具体车的类

package kw.test.gcXXX;

public class BenBen implements Car{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("XCXXX");
    }
}
package kw.test.gcXXX;

public class HongQi implements Car{

    @Override
    public    void run() {
        // TODO Auto-generated method stub
        System.out.println("XXXXXXXXXXX");
        
    }
}

两个车类也创建好了,现在我们创建车的工厂,只是提供创建车的方法,并没有具体实现。

package kw.test.gcXXX;

public interface Factory {
    public Car AllCar();

}

具体实现的车工厂,不同的工厂创建出自己具体的车

package kw.test.gcXXX;

public class HongQiFactory implements Factory{

    @Override
    public Car AllCar() {
        // TODO Auto-generated method stub
        return new HongQi();
    }

}
package kw.test.gcXXX;

public class BenBenFact implements Factory{

    @Override
    public Car AllCar() {
        // TODO Auto-generated method stub
        return new BenBen();
    }
 
}

这种方法有个好处,需要创建新的车,只需要实现接口,实现里面的方法即可,也解决了简单工厂的缺陷。

 

简单工厂和工厂方法比较

(1)简单工厂的类复杂度低,类的个数相对少。

(2)工厂方法代码的复杂度比较高。

(3)工厂方法客户端编码复杂。

(4)工厂方法管理上难度大

 

以上比较:工厂方法不占优势,只是解决了开闭原则。

posted @ 2018-03-13 20:50  kwdeep  阅读(116)  评论(0编辑  收藏  举报