Android开发

工厂方法模式(由子类决定要创建的具体类是哪一个)

2017-11-16  本文已影响10人  钉某人
源码地址 https://github.com/DingMouRen/DesignPattern
工厂方法模式.png
定义

工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。

使用场景
协作

Factory依赖它的子类来定义工厂方法createProduct(),工厂方法返回恰当的产品对象即可。

举个栗子

我们要生产两种自行车:一般自行车和山地车,组装过程基本都是相同的。

//抽象产品类:自行车
public abstract class Bike {
    public abstract void drive();
}
//具体产品类:一般的自行车
public class GeneralBike extends Bike {
    @Override
    public void drive() {
        System.out.println(this.getClass().getSimpleName()+"可以骑了");
    }
}

//抽象工厂类
public abstract class Factory {
    public abstract <T extends Bike> T createBike(Class<T> clz);
}
//具体工厂类
public class BikeFactory extends Factory{
    @Override
    public <T extends Bike> T createBike(Class<T> clz) {
        Bike bike = null;
        try {
            bike = (Bike) Class.forName(clz.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return (T) bike;
    }
}

使用

    public static void main(String[] args) {
        //创建工厂对象
        Factory factory = new BikeFactory();
        //创建自行车
        Bike generalBike = factory.createBike(GeneralBike.class);
        Bike mountainBike = factory.createBike(MountainBike.class);
        //自行车试驾
        generalBike.drive();
        mountainBike.drive();

    }
总结

我们为工厂方法模式添加新的产品时需要编写新的产品类,同时也要编写相应的抽象层,会造成类结构复杂化。所以要权衡是否要使用工厂方法模式。

上一篇 下一篇

猜你喜欢

热点阅读