KFC模拟收费系统

KFC说明文档

一,问题简介

模仿KFC收费系统,利用两种或者两种以上的设计模式,实现简单的收费,优惠,找零的收银系统。

二,设计模式

本系统采用了简单工厂以及抽象工厂模式和策略模式。

1.简单工厂模式:

1)模式介绍简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类

2)本系统中,建立两个现金收费以及非现金收费的超类,以其下的各个子类来继承实现这两个超类,在超类的基础上去实现不同的实例化的个体,去重写超类的方法。就比如说本系统中的CashSuper和ElecPaySuper两个超类,分别定义了两个最基本的方法。具体的子类抽象出来就是这个方法。然后当方法建立完毕,利用两个工厂分别去整合两个不同类型的各个实例。

3)模式结构图

 

2.抽象工厂模式

1)抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。

2)在本例中,由于不同的需求,建立了两个工厂,两个工厂用于产生不同的类,所以如果在客户端中要使用的话,我们就要让客户端去认识两个类别,这无疑增加了客户端类的负担,于是我们就将两个大类都抽象出来,放进另一个类里,通过策略模式等模式去选择我们最终选择的工厂,减轻了客户端的负担,也符合要求。

3)模式结构

3.策略模式

  1)模式介绍

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。

策略模式是一种对象行为型模式。

  2)模式应用

策略模式的本质就是将算法进行封装,在本系统中,由于大的抽象,可以得出每个子类的最核心的功能就是超类的功能的一个延申,也就是同一件事的不同的处理算法,在不同的模式下是可以相互替换的,因此将策略模式与子类的算法相互结合,就能够得到操作更加简便的代码。

3)模式结构

 

  • 具体编写
  1. 基类的编写

  1. 扩展类的编写

1)基本基类

  2)子类工厂

3)整合工厂

4)客户端

 

 

四,程序类图

本图为最基本的类图,很容易就能看出类的基本关系图谱,以及相互继承机制的运用,由于python中没有接口这一关键字,于是用普通的基类在代替。

 

五,编写测试

1,简单的测试如下

其中测试的各种样例依次有:

最后三个属于非现金支付类,也就是用了不同的处理方法,但是能够整合到一起。

对于套餐类,采用的是固定收费的方式,所以也就会得出这样的计算结果。

 

最后是小票的测试:

采用时间节点的方法,这样的话,在最后拓展的时候,可以根据文件中的时间,去计算每一段时间的最终的收入,便于统计并加入数据库中。

六.总结

在代码编写过程中,由于python的语言风格,使得其面向对象的语言特性并不是那么明显,用基本的类来代替接口可抽象类。再者,由于python面向对象机制的简便的关系,使得最终的调用以及测试,更加的方便。

 

在本次的代码以及需求的分析过程中,明确的认识到软件系统的要求,做好需求,才能更好的实现

 

同时,由于本次代码的构建是循序渐进的,利用的面向对象的七大原则中的开闭原则,使得每次增加新的功能,不会对原有的系统产生影响,也就是的功能的扩展更加的方便和安全,这也就是设计模式带来的简便。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值