C++设计模式:单件工具与批处理标准教程

需积分: 13 21 下载量 49 浏览量 更新于2024-08-10 收藏 6.5MB PDF 举报
"单件工具-批处理标准教程" 在软件开发中,单件(Singleton)是一种常见的设计模式,用于确保一个类只有一个实例,并提供全局访问点。本教程聚焦于通过批处理工具实现单件模式的自动化,使得在C++编程中能够更方便地管理和使用单例对象。 单件模式的主要目标包括: 1. 用户手动维护单件生命周期:控制对象的创建和销毁,通常在程序开始时创建单例,在程序结束时销毁。 2. 支持跨动态库访问:确保无论在哪个动态库中,对同一单例的引用都指向同一个实例。 3. 禁止复制:防止通过复制构造函数或赋值操作符创建额外的实例,确保单例的唯一性。 4. 单件类型派生的类型也是单件:如果一个类是从单例类派生的,那么这个派生类也应该遵循单例规则,只允许存在一个实例。 在Andrei Alexandrescu的《C++设计新思维——泛型编程与设计模式之应用》中,作者探讨了如何利用模板元编程技术实现设计模式的自动化工具。模板元编程是一种在编译时执行的编程技术,它允许我们在编译期间生成和操作代码。通过这种方式,可以创建出通用的、适应性强的工具,用于自动实施设计模式,如单件模式。这种自动化工具可以提高代码的可读性和可靠性,同时减少手动实现设计模式时可能引入的错误。 在3D游戏开发中,尤其是使用像OGRE 3D这样的游戏框架,单件模式的应用尤其关键。OGRE 3D是一个强大的开源渲染引擎,它为游戏开发者提供了构建实时3D场景的工具。单件模式可用于管理共享资源,如渲染上下文、纹理管理器或者场景管理器等,确保在整个游戏应用程序中这些关键组件的唯一性和一致性。 例如,使用单件模式可以实现一个渲染管理器,该管理器负责初始化和关闭渲染窗口、设置渲染参数以及管理渲染管线。当多个模块或组件需要访问这些共享资源时,它们都可以通过全局的单例接口进行操作,而无需关心具体的实现细节。这有助于保持代码结构清晰,降低模块间的耦合度。 此外,作者在书中还提到了社区的力量,oGRE项目从一个个人项目发展成为全球开发者广泛使用的框架,这体现了开源社区的协作精神。对于oGRE的中文文档和书籍,作者表示了高度的赞赏和感谢,这表明了跨文化的技术交流对于技术发展的重要性。 通过学习和实践单件模式以及使用类似OGRE 3D的框架,开发者不仅可以提升游戏开发效率,还能深入理解设计模式在实际项目中的应用,为今后的软件开发打下坚实基础。

代码:import os import pandas as pd print("开始计算一口价") folder_path = "D:/一口价生成" file_name = "活动.xlsx" new_file_name = "一口价及升价4.xlsx" activity_file_path = os.path.join(folder_path, file_name) activity_df = pd.read_excel(activity_file_path) discounts = {"6.9折": 0.69, "5折": 0.5, "3.9折": 0.39} new_price_df = pd.DataFrame(columns=["商品编码", "价格"]) for index, row in activity_df.iterrows(): if row["活动"] in discounts: standard_price = row["标准售价"] discount = discounts.get(row["活动"], 1) new_price = round(standard_price * discount, 2) product_code = str(row["商品编码"]).zfill(7) new_price_df.loc[index] = [product_code, new_price] elif isinstance(row["活动"], int): product_code = str(row["商品编码"]).zfill(7) new_price = int(row["活动"]) new_price_df.loc[index] = [product_code, new_price] elif isinstance(row["活动"], float): product_code = str(row["商品编码"]).zfill(7) new_price = float(row["活动"]) new_price_df.loc[index] =[product_code, new_price] new_file_path = os.path.join(folder_path, new_file_name) new_price_df.to_excel(new_file_path, index=False) print("已生成") 新增一个功能:将“活动”列中命名为“买一送一(系统设置为单件5折)”对应的“标准售价”*05得出新的数值,将“买一送一(系统设置为单件5折)”对应的“商品编号”和计算出来的数值输出到一个新的xlsx表格,表格命名为“5折”,其中表格A列为“商品编号”对应“商品编号”,B列为“价格,对应计算出来的数值。而表格保存在“活动”表格的同一个目录下

2023-06-06 上传