初識-設計模式五 工廠模式

package com.mybatis.designpatterns.factory;

public class Add extends Operation {
    public Double getResult(){
        return getNumberA() + getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

public class Subtraction extends Operation{
    public Double getResult(){
        return getNumberA() - getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

public class Multiplication extends Operation {
    public Double getResult(){
        return getNumberA() * getNumberB();
    }
}
package com.mybatis.designpatterns.factory;

import lombok.Data;

@Data
abstract class Operation {  // 運算通用父類
    private Double numberA;
    private Double numberB;
    public Double getResult(){
        return 0D;
    }
}
package com.mybatis.designpatterns.factory;

public class AddFactory implements CreateFactory{

    @Override
    public Operation createOperation() {  // 加法工廠
        return new Add();
    }
}
package com.mybatis.designpatterns.factory;

public class SubtractionFactory implements CreateFactory { // 減法工廠
    @Override
    public Operation createOperation() { 
        return new Subtraction();
    }
}

 

package com.mybatis.designpatterns.factory;

public class Multiplicationfactory implements CreateFactory {  // 乘法工廠
    @Override
    public Operation createOperation() {
        return new Multiplication();
    }
}
package com.mybatis.designpatterns.factory;

public interface CreateFactory { // 抽象工廠類,
    public Operation createOperation();
}
package com.mybatis.designpatterns.factory;

public class FactoryMain {
    public static void main(String[] args) {
        CreateFactory factory = new AddFactory();
        Operation operation = factory.createOperation();
        operation.setNumberA(10D);
        operation.setNumberB(10D);
        System.out.println(operation.getResult());

        System.out.println("==============");

        CreateFactory multiplicationfactory = new Multiplicationfactory();
        Operation operation1 = multiplicationfactory.createOperation();
        operation1.setNumberA(10D);
        operation1.setNumberB(10D);
        System.out.println(operation1.getResult());

    }
}

 

 

簡單工廠和工廠設計模式UML:

簡單工廠:

 工廠:

開放-封閉原則:
        面對需求,對程序的改動是通過增加新的代碼進行的,而不是更改現有的代碼 

 

感受:總體而言簡單工廠和工廠模式最大區別是面對新需求的時候,工廠模式相對於簡單工廠修改的代碼更少;只需要在原有的業務邏輯上增加新的代碼即可滿足需求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章