简单工厂模式

看的是《大话设计模式》,第一章是简单工厂模式,下面是我的阅读笔记

简单工厂模式

1、代码规范
2、面向对象编程
可维护、可复用、可扩展、灵活性好
通过封装、继承、多态把程序的耦合度降低
容易修改并且易于复用
3、业务的封装
让业务逻辑和界面逻辑分开,降低之间的耦合度,只有分离开,才能达到容易维护或扩展
4、简单工厂模式
使用一个单独的类来做这个创造实例的过程,这就是工厂

书中是用c++实现的简单工厂模式,我打算用java实现一遍(做一个小菜要做的计算器)。

下面是项目结构:

首先是Operation类,它是所有计算类的父类。

package com.caculator;

public class Operation {

    private double result;  //结果
    
    public double getResult(double numberA,double numberB){
        return result;
    }
}

然后依次是具体的计算类,以Add类为例。

package com.caculator;

public class Add extends Operation{
    
    @Override
    public double getResult(double numberA,double numberB){
        double result = numberA + numberB;
        return result;
    }
    
}

之后就是工厂类,所谓工厂类其实就是一个专门用来new对象的类(创造实例的类)。

package com.factory;

import com.caculator.Add;
import com.caculator.Division;
import com.caculator.Minus;
import com.caculator.Multi;
import com.caculator.Operation;

public class OperFactory {
    
    public static Operation createOperate(String operate){
        Operation op = null;
        switch(operate){
            case "+":
                op = new Add();
                break;
            case "-":
                op = new Minus();
                break;
            case "*":
                op = new Multi();
                break;
            case "/":
                op = new Division();
                break;
        }
        return op;
    }
    
}

最后是测试类,用来测试代码:

package com.test;

import com.caculator.Operation;
import com.factory.OperFactory;

public class Test {
    
    public static void main(String[] args){
        Operation operation;
        double result;
        
        operation = OperFactory.createOperate("+");
        result = operation.getResult(4,2);
        System.out.println("结果是:"+result);
        
        operation = OperFactory.createOperate("-");
        result = operation.getResult(4,2);
        System.out.println("结果是:"+result);
        
        operation = OperFactory.createOperate("*");
        result = operation.getResult(4,2);
        System.out.println("结果是:"+result);
        
        operation = OperFactory.createOperate("/");
        result = operation.getResult(4,2);
        System.out.println("结果是:"+result);
    }
}

源码

原文地址:https://www.cnblogs.com/cuglkb/p/6860224.html