关于工厂方法模式的优点和缺点

测试工厂方法模式

package cn.com.factorymethod;

public interface Car {
    void run();
}
class Audi implements Car {
    @Override
    public void run() {
        System.out.println("奥迪在跑");
    }
}
class Byd implements Car {
    @Override
    public void run() {
        System.out.println("比亚迪在跑");
    }
}
class Benz implements Car {
    @Override
    public void run() {
        System.out.println("奔驰在跑");
    }
}

定义一个工厂类的接口

package cn.com.factorymethod;

public interface CarFactory {
    Car creatCar();
}

具体的工厂类实现这个接口

package cn.com.factorymethod;

public class AudiFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Audi();
    }
}
package cn.com.factorymethod;

public class BenzFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Benz();
    }
}

package cn.com.factorymethod;

public class BydFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Byd();
    }
}

测试用例

package cn.com.factorymethod;

public class Test {
    //测试工厂方法模式
    public static void main(String[] args) {
        Car c1 = new AudiFactory().creatCar();
        Car c2 = new BydFactory().creatCar();
        Car c3 = new BenzFactory().creatCar();
        c1.run();
        c2.run();
        c3.run();
        //满足了ocp原则(开闭原则)
        //增加新的类需要修建新的工厂,增加了代码量,当同时需要修改多个工厂类的时候
        ///会很麻烦,而简单工厂模式只需要修改唯一的工厂类
        //工厂方法模式就是升级版的简单工厂模式
    }
}

总结:
满足了ocp原则,增加新的类需要修建新的工厂,增加了代码量,如果同时需要修改多个工厂类的时候会很麻烦,而简单工厂模式只需要修改一个类,工厂方法模式是升级版的简单工厂模式

你可能感兴趣的:(关于工厂方法模式的优点和缺点)