工厂方法模式与抽象工厂模式

此生再无相见时 提交于 2019-12-24 10:40:10

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

工厂方法设计模式:

    一个抽象的产品类,派生出多个不同的产品,一个抽象工厂类,派生出多个不同的抽象工厂,每个工厂对应一个抽象的产品类。

    缺点:在我们想要增加一个新的产品的时候,我们需要新增 一个对应的工厂。

    举个例子:例如一个运算类,有加法类继承它,减法类继承它,同时实现它的抽象方法(计算方法), 这时候我们就需要有加法工厂,减法工厂来与运算类一一对应。  客户端如果需要减法功能,就从减法工厂中获取一个减法类的实例,然后调用其方法即可。

public abstract class operation { //产品抽象基类

    public int number1;
    public int number2;

    public abstract Object operation();

}
public class add extends operation { //加法类

    @Override
    public Object operation() {
        return number1+number2;
    }
}
public abstract class factory { //基本工厂,返回产品基类

    public abstract operation getOpFactory();
}
public class AddFactory extends  factory{ //加法工厂,对应返回加法基类。

    @Override
    public operation getOpFactory() {
        return new add();
    }
}

抽象工厂模式:

    多个产品的基类,派生出多个产品,一个抽象工厂,派生出多个工厂,每个工厂对应每一个基类。

    举个列子:在上面例子的基础上,我们将继承运算基类的类拆分出来,变成加法类,减法类,这样每个类就能够实现自己对应的逻辑,比如加法类你可以写上两个抽象方法(普通加法,超级加法), 然后我们继承基类工厂(方法有创建加法工厂,创建减法工厂),实现对应的加法工厂(实现),减法工厂,每个工厂对应一个相应的基类。

    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!