工厂方法模式

2016-06-20  本文已影响0人  谢凯

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。

在工厂方法模式中,与简单工厂的区别在于,不是由一个统一的工厂来创建所有的对象,而是一个子对象产品对应一个具体的工厂。

工厂方法模式结构图.jpg

它是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类。和简单工厂模式中的写法一样。

它实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应。和简单工厂模式中的写法一样。

在抽象工厂类中,声明了工厂方法(Factory Method),用于返回一个产品。抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。

public interface MapFactory {

    // GWIMapBaseLayout createMapView();
    
    GWIMapBaseLayout createMapView(Context context);
}

它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

public class BaiduOutdoorMapFactory implements MapFactory {

    @Override
    public GWIMapBaseLayout createMapView(Context context) {
        LayoutInflater inflater = LayoutInflater.from(context);
        return (GWIMapBaseLayout) inflater.inflate(R.layout.baidu_map_layout, null);
    }
}

调用方只需要关注工厂类即可,需要什么对象产品就拿到对应的工厂类来创建对应的产品。

MapFactory mapFactory = new BaiduOutdoorMapFactory();
GWIMapBaseLayout gwiMapBaseLayout = mapFactory.createMapView(this);


上一篇 下一篇

猜你喜欢

热点阅读