一.实验目的
1.了解工厂模式创建对象的基本思路和方法,理解工厂类在创建对象过程中角色作用;
2.熟悉简单工厂模式的类图结构,并能利用该模式实现同一工厂对不同对象的创建;
3.熟悉工厂方法模式的类图结构,并能利用该模式实现不同工厂类对不同对象的创建。
二.实验内容
1.构建一个实现收费功能的运算类(CashUp),并构造继承该类的三个子类(正常收费类CashNormal、八折收费类CashDiscount、满减类CashReturn),分别实现收费的运算;
2.利用简单工厂模式,构建一个简单工厂类,实现对上述三个子类对象的创建;
3.利用工厂方法模式,构建能够实现对上述三个不同子类对象的分别创建的工厂,实现不同工厂类生产不同的运算类对象。
三.实验过程
简单工厂模式类图
四.调试和运行结果
进入主程序 输入单价、数量、优惠,并读取用户输入
CashFactory 是一个工厂类,负责根据传入的优惠类型 Discount创建相应的现金收费对象。
cashUp 是一个现金收费对象的引用,它根据优惠类型 Discount创建出不同的实例,可以是正常收费、打折收费或满减收费等。
使用了简单工厂模式来创建不同类型的现金收费对象
CashFactory 是一个工厂类,负责根据传入的优惠类型 Discount创建相应的现金收费对象。
CreateCash 是工厂类的静态方法,接收一个优惠类型作为参数,并根据这个参数来实例化不同的现金收费对象。
cashUp 是一个现金收费对象的引用,它根据优惠类型 Discount 创建出不同的实例,可以是正常收费、打折收费或满减收费等。
声明一个变量 totalprice 用于存储购买商品的总价格,并将其初始化为 0。
调用 cashUp 对象的 DisCount 方法来计算折扣后的总价格。得到购买商品的总金额。
最终将折扣后的金额赋值给 totalprice,得到购买商品的总价格。
它继承自 CashUp 抽象类,并实现了抽象方法 DisCount
通过将原始金额 money 与折扣率相乘,计算出折扣后的金额,并将其返回。
声明一个变量 totalprice 用于存储购买商品的总价格,并将其初始化为 0。
调用 cashUp 对象的 DisCount 方法来计算折扣后的总价格。
商品单价乘以数量,得到购买商品的总金额。
调用了 cashUp 对象的 DisCount 方法,根据具体的收费类型对传入的金额进行折扣计算,并返回折扣后的金额。
五.实验总结
1.简单工厂模式用于将对象的创建过程封装在一个工厂类中,可以根据条件来创建不同类型的对象。简单工厂模式创建不同的现金收费对象,根据传入的优惠类型来实例化相应的对象。
2.通过使用简单工厂模式,能够在不修改主程序逻辑的情况下,轻松地切换不同的现金收费策略,提高了代码的可维护性和灵活性。这种模式对于对象的创建和管理提供了一种结构化的方式。