【工厂方法模式】—— 广泛应用的模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Pro_Vinny/article/details/81518497

工厂方法模式,一种对象创建型的设计模式,提供创建对象的接口,让子类决定要实例化的对象。通过依赖注入的方式达到解耦、复用的目的。

一、关键点

1)我们先来说下这个设计模式的关键点,“简单工厂” 和 “依赖注入”, 对,就这两个。

简单工厂” :和简单工厂类似,该模式也是按需实例所需要的对象;

依赖注入” :在 “简单工厂” 对基础上,这个模式对不同点是将对象的选择判断移到了调用者中,即 “依赖注入”。

2)我们再来看下它的类图关系:

这里有四个角色:抽象工厂具体工厂抽象产品具体产品

而抽象工厂和具体工厂,就是和工厂模式的区别所在,而这样的方式,就达到了上述说的“依赖注入”的解耦目的。

二、实现

2.1 抽象产品

产品对象的公共父类,或公共接口:

public interface IProduct {

    /** defined method of product */
    void create();
}

 2.2 具体产品

实现抽象产品,定义具体的产品业务细节:

public class AProduct implements IProduct {

    @Override
    public void create() {
        /** create product of 'A' */
    }
}


public class BProduct implements IProduct {

    @Override
    public void create() {
        /** create product of 'B' */
    }
}

 2.3 抽象工厂

工厂类的父类或者接口:

public interface IFactory {

    /** method of create product */
    IProduct createProduct();
}

2.4 具体工厂 

具体实现的工厂,与业务的具体的产品对象相对应。客户端使用的时候直接可以根据需要来说注入对于的具体工厂:

public class AFactory implements IFactory {

    @Override
    public IProduct createProduct() {
        return new AProduct();
    }
}


public class BFactory implements IFactory {
    
    @Override
    public IProduct createProduct() {
        return new BProduct();
    }
}

三、小结

3.1 具体工厂与具体产品相对应,客户端可按需调用对应的工厂类来获取对应的产品对象,即依赖注入

3.2 当生产者清楚需要什么样的产品,而不关心工厂细节,这时候就可以考虑使用该模式。

猜你喜欢

转载自blog.csdn.net/Pro_Vinny/article/details/81518497