工作生活

简单工厂模式

2019-07-17  本文已影响0人  懒树趾三

解决的问题:将对象的创建过程隐藏在工厂类中,使用者只需要知道名字就可以获取到想要创建的对象

优点:扩展性高,增加同类型的功能只需要增加一个具体的产品类即可

缺点:每增加一个产品类,工厂类都要增加判断,低内聚

核心类:工厂类、产品接口类、具体产品类

UML图:

举例:宝马和奔驰都属于汽车,在生产汽车的时候,就可以使用简单工厂的设计模式
1、构建产品接口:

/*抽象产品类:所有产品共同的实现的接口*/
public interface ICar {
    void isCar();
}

2、构建具体产品:

/*具体工厂类*/
public class BMW implements ICar {
    @Override
    public void isCar() {
        Log.d("TAG","I am BMW");
    }
}

public class Gallop implements ICar {
    @Override
    public void isCar() {
        Log.d("TAG","I am Gallop");
    }
}

3、构建工厂:

/*工厂类:根据不同的实参创建不同的对象*/
public class Factory {

    public static ICar getInstance(String type){
        if(type.equals("BMW")){
            return new BMW();
        }else if(type.equals("Gallop")){
            return new Gallop();
        }
        return null;
    }
}

4、外部调用:

        Factory.getInstance("BMW").isCar();
        Factory.getInstance("Gallop").isCar();

适合场景:功能复杂,又有很多功能可以共用的模块

上一篇 下一篇

猜你喜欢

热点阅读