简单工厂模式

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

简单工厂模式

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);
    }
}
复制代码

源码

 

posted on   猫咪大王  阅读(190)  评论(0编辑  收藏  举报

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示