其他分享
首页 > 其他分享> > 设计模式——工厂模式

设计模式——工厂模式

作者:互联网

工厂模式

简单工厂

//产品接口
public interface Car {
    void name();
}
//产品实现类——BYD
public class BYD implements Car{
    @Override
    public void name() {
        System.out.println("比亚迪");
    }
}
//产品实现类——Tesla
public class Tesla implements Car{
    @Override
    public void name() {
        System.out.println("特斯拉");
    }
}
//产品工厂
public class CarFactory {
    public static Car getCar(String s) {
        if("比亚迪".equals(s)) {
            return new BYD();
        }else if("特斯拉".equals(s)) {
            return new Tesla();
        }else {
            return null;
        }
    }
}
//消费者
public class Consumer {
    public static void main(String[] args) {
//        //获得对象的传统方法
//        Car car1 = new BYD();
//        Car car2 = new Tesla();
//
//        car1.name();
//        car2.name();
        
        //简单工厂
        Car car1 = CarFactory.getCar("比亚迪");
        Car car2 = CarFactory.getCar("特斯拉");

        car1.name();//比亚迪
        car2.name();//特斯拉
    }
}

工厂方法

//产品接口
public interface Car {
    void name();
}
//产品实现类——BYD
public class BYD implements Car{
    @Override
    public void name() {
        System.out.println("比亚迪");
    }
}
//产品实现类——Tesla
public class Tesla implements Car{
    @Override
    public void name() {
        System.out.println("特斯拉");
    }
}
//------------------------------以下代表与简单工厂不一样的地方----------------------------
//产品工厂接口
public interface CarFactory {
    Car getCar();
}
//产品工厂实现类——BYDFactory
public class BYDFactory implements CarFactory{
    @Override
    public Car getCar() {
        return new BYD();
    }
}
//产品工厂实现类——TeslaFactory
public class TeslaFactory implements CarFactory{
    @Override
    public Car getCar() {
        return new Tesla();
    }
}
//消费者——Consumer
public class Consumer {
    public static void main(String[] args) {
        Car car1 = new BYDFactory().getCar();
        Car car2 = new TeslaFactory().getCar();

        car1.name();//比亚迪
        car2.name();//特斯拉
    }
}
//------------------------------------------------------------------------------------

简单工厂与工厂方法的区别:

前者是一个工厂生产多个产品,我们需要获得哪个产品,就去统一的工厂求购即可;优势是代码量简洁,但不易横向扩展产品数量(需要改动工厂内部代码逻辑

后者是多个工厂生产各自产品,我们需要获得哪个产品,就去相应的工厂求购即可。优势是利于横向扩展产品数量,但代码量繁杂

根据设计原则,我们开发出了工厂方法模式,但是一般根据实际业务,还是简单工厂更贴合应用。

标签:name,Car,class,模式,工厂,void,设计模式,public
来源: https://www.cnblogs.com/reex/p/16524729.html