bstr 单一职责 了解 没有 继承类 维护 系统 什么
在之前的文章中,我们提到了如何学习OOP以及对应的简单工厂模式,由于时间比较长,我们先回顾一下之前讲到的一些内容,然后继续了解策略模式。
是什么阻碍了我们软件系统的开发?为什么在需求沟通不明确的前期,我们无法开发软件;在需求明确的后期,又无法对软件进行灵活修改。如果大家仔细分析中国的四大发明,就会发现活字印刷非常类似于我们的软件OOP思想。在我们传统的刻板印刷中,我们一旦设计完成系统,再对其变更时,代价就会非常大,需要重新制版印刷,如果连续变更就会意味着连续的修改刻板。古人一定对书籍的变更非常痛恨吧~
但是,当古人转换思想,将每一个字都做一个小的刻板,印刷系统将会变为如下的例子
通过某些小模块的替换,可以让印刷更加灵活变更。这种思想的转变正式活字印刷成为四大发明的根本。在软件设计的过程中,也出现了类似的“活字印刷”术--面向对象思想。通过单一职责原则,OOP设计可以将系统分割为功能单一的很多小模块,通过小模块的拼接,组织不同的程序。一旦任何一处的模块发生了变化,我们只需修改固定的一些模块,即可让我的系统发生变化。可见,在软件设计的历史上,OOP的出现也引发了一场设计的革命。
既然了解了OOP思想,那OOP的第一个使用方法莫过于简单工厂模式了。通常,我们在传统的面向过程设计中,使用Case结构来解决不同情况的出现
但是当我们在多个函数中都需要进行判断时,我们的Case结构将会写很多个,并且每一次维护代码均需要了解之前的设计,一步小心还会改错代码。
为此,简单工厂模式出现,进行了公共行为的抽象,并且通过简单工厂对输出的内容进行选择
通过选择,可以让程序在运行时动态选择执行的内容,通过类的继承,可以实现对原有方法的轻易拓展。而且改动的时候不影响主程序的原有设计,实现了针对接口而是实现编程。策略模式的学习,我使用《大话设计模式》的例子,一边学习一边熟悉。该模式的目的是实现一个商场收银软件,通过文本框来输入单价和数量,从而计算输出的结果。
使用传统的方法快速设计完成了代码,不超过10分钟就完成了功能当我们完成代码后,新的需求改动来了,商场需要增加打折系统,可以对输出的总价进行不同程度的打折,于是,我们增加打折功选项。为了保证商家可以自由控制打折力度,所以我们需要支持不打折和打不同折。
当商场需要增加满减活动(如满200减30)时,我们又需要改动程序,增加一个子VI,并且修改程序的连线。为了避免对主程序修改并优化逻辑设计,我们尝试使用OOP思想对该程序进行改进。
分析程序需求,我们发现用金额计算的算法是这段程序中最容易变化的部分,所以对这段算法进行抽象,抽象后的类图如下。来源: http://www.bubuko.com/infodetail-2026956.html