"宋行健同学的一份设计模式实验报告,涵盖了工厂方法和抽象工厂模式的应用,属于2020-2021学年第二学期软件工程专业的课程内容。实验中,宋行健模拟了一个销售公司根据订单购置轿车的过程,涉及到CarA和CarB两种品牌的车辆,车辆由车架、车轮和发动机组成。实验要求使用工厂方法设计程序,并分析添加新品牌汽车时的设计变化。报告中包含了类图设计和部分Java代码实现,如Company类、IFactory接口、FactoryA和FactoryB实现类以及Car和其子类的结构。"
在此次实验中,宋行健同学应用了设计模式中的"工厂方法"和"抽象工厂"概念。工厂方法是一种创建型设计模式,它提供了一种创建对象的最佳方式,允许在运行时决定实例化哪个类。在这个实验中,IFactory接口定义了创建Car对象的规范,而FactoryA和FactoryB是该接口的具体实现,分别负责创建CarA和CarB。这样做的好处是解耦了产品(Car)的创建和使用,使得系统更具有灵活性,能够适应未来可能增加的新品牌汽车。
抽象工厂模式则进一步扩展了工厂方法,允许创建相关或依赖对象的家族,而无需指定它们的具体类。在这个实验的上下文中,虽然没有明确提到抽象工厂模式的完整实现,但可以理解为,随着更多汽车品牌的加入,可以创建一个更高级别的抽象工厂来管理各种品牌的汽车工厂,从而保持代码的模块化和可扩展性。
实验报告中,Company类作为主程序入口,负责管理和协调整个订单处理流程。它使用一个Map存储工厂信息,通过读取外部txt文件获取订单数据,并利用IFactory接口动态地创建Car对象。这样的设计展示了工厂方法如何使程序更具动态性和可配置性,因为新的汽车品牌只需要添加新的工厂实现,而无需修改现有代码。
在实验的第二部分,宋行健同学需要分析当添加新的汽车品牌时,程序设计和代码会有什么变化。这涉及到对原有设计模式的理解和扩展性评估。通常,添加新品牌可能需要创建新的具体工厂类,并在Company类中注册这个新工厂。设计图和代码的差异将体现在新类的引入以及工厂Map的更新上,这将体现工厂方法模式的灵活性和适应性。
通过这次实验,宋行健同学不仅掌握了工厂方法和抽象工厂模式的基本概念,还实践了这些模式在实际问题解决中的应用,提升了软件设计的抽象和封装能力,为后续的软件开发工作打下了坚实的基础。