Simple Factory

Posted by kenrbnsn on Fri, 31 Jan 2020 22:43:58 +0100

Simple factory mode

1. Benefits of object orientation

Through encapsulation, inheritance and polymorphism, the coupling of programs is reduced.
Using design patterns makes programs more flexible, easy to modify, and easy to reuse.
It is maintainable, extensible, reusable and flexible.

2. Simple factory mode implementation

Simple addition, subtraction, multiplication and division:
Test main method

public class SimpleFactoryMain {
public static void main(String[] args) {
    String oprate ="/";
    Operation oper = SimpleFactory.operation(oprate);
    oper.setNumberA(2.0);
    oper.setNumberB(0);
    double result = oper.getResult();
    System.out.println(oper.getNumberA()+oprate+oper.getNumberB()+"="+result);
}
}

SimpleFactory simple factory

public class SimpleFactory {
    public static Operation operation(String operate) {
        Operation oper = null;
        switch (operate) {
        case "+":
            oper = new Add();
            break;
        case "-":
            oper = new Sub();
            break;
        case "*":
            oper = new Mul();
            break;
        case "/":
            oper = new Div();
            break;
        default:
            break;
        }
        return oper;
    }
}

Operatio operation class

/**
 * Operatio Arithmetic class
 *
 */
public class Operation {
    private double numberA = 0;
    private double numberB = 0;
    public double getNumberA() {
        return numberA;
    }
    public void setNumberA(double numberA) {
        this.numberA = numberA;
    }
    public double getNumberB() {
        return numberB;
    }
    public void setNumberB(double numberB) {
        this.numberB = numberB;
    }
    public double getResult() {
        double result =0;
        return result;
    }
}

Addition operation

/**
 * Addition operation
 * @author 15680
 *
 */
public class Add extends Operation {
    @Override
    public double getResult() {
        double result =0;
        result = getNumberA()+getNumberB();
        return result;
    }
}

Subtraction operation

/**
 * Subtraction operations
 * @author 15680
 *
 */
public class Sub extends Operation {
    @Override
    public double getResult() {
        double result =0;
        result = getNumberA()-getNumberB();
        return result;
    }
}

Multiplication operation

/**
 * Multiplication class
 * @author 15680
 *
 */
public class Mul extends Operation {
    @Override
    public double getResult() {
        double result =0.0;
        result = getNumberA()*getNumberB();
        return result;
    }
}

Division operation

/**
 * Division operation class
 * @author 15680
 *
 */
public class Div extends Operation {
    @Override
    public double getResult() {
        double result =0.0;
        if(getNumberB()==0) {
            System.out.println("Divisor cannot be 0");
            return -1;
        }
        result= getNumberA()/getNumberB();
        return result;
    }
}