计算器引发的思考详解编程语言

今天我们来说一个简单的需求,一个简单的计算器,实现加减乘除即可。界面我们暂且略过,比较简单,提交过来的有两个数字和一个运算符。

基础数据如下:

$number_1 = $_POST['number_1']; 
$number_2 = $_POST['number_2']; 
$operator = $_POST['operator'];

一、要开发一个计算器软件,过程式的开发流程如下:

switch($operator) 
{ 
    case '+': 
        $result = $number_1 + $number_2; 
        break; 
    case '-': 
        $result = $number_1 - $number_2; 
        break; 
    case '*': 
        $result = $number_1 * $number_2; 
        break; 
    case '/': 
        $result = $number_1 / $number_2; 
        break; 
}

优势是什么?显然,优势就是非常容易理解,纯过程化的编写方式,非常直观。

弊端是什么?如果后面再加新的运算符,那么我们会不断的更新这个运算方法,不利于维护。

二、优化后的计算器软件,面向对象式的开发流程如下:

//抽象运算类 
abstract class Operator 
{ 
    abstract function getResult($number_1,$number_2); 
} 
 
//加法运算类 
class Plus extends Operator 
{ 
    function getResult($number_1, $number_2) 
    { 
        return $number_1 + $number_2; 
    } 
} 
 
//减法运算类 
class Minus extends Operator 
{ 
    function getResult($number_1, $number_2) 
    { 
        return $number_1 - $number_2; 
    } 
} 
 
//乘法运算类 
class Multiply extends Operator 
{ 
    function getResult($number_1, $number_2) 
    { 
        return $number_1 * $number_2; 
    } 
} 
 
//除法运算类 
class Devide extends Operator 
{ 
    function getResult($number_1, $number_2) 
    { 
        try{ 
            $result = $number_1 / $number_2; 
        }catch(/Exception $e){ 
            $result = $e->getMessage(); 
        } 
 
        return $result; 
    } 
} 
 
//简单工厂类 
class Factory 
{ 
    public static function createOperator($operator) 
    { 
        $Operator = null; 
        switch($operator) 
        { 
            case '+': 
                $Operator = new Plus(); 
                break; 
            case '-': 
                $Operator = new Minus(); 
                break; 
            case '*': 
                $Operator = new Multiply(); 
                break; 
            case '/': 
                $Operator = new Devide(); 
                break; 
        } 
 
        return $Operator; 
    } 
}

优势是什么?我们后面要是再增加其它的运算,只需新增一个运算类,然后在简单工厂类中加代码处理即可,维护方便,且可以不同的方法由不同的人来进行处理,自己完成自己的一块就可以了,不会影响到别人的代码。

弊端是什么?代码量相对要大很多,且比较抽象,不够直观。

三、UML图

计算器引发的思考详解编程语言

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/16895.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论