软件设计实验24,25:模板方法模式,模板方法模式

news/2025/12/4 8:12:57/文章来源:https://www.cnblogs.com/abc233/p/19304842

实验 24:模板方法模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解模板方法模式的动机,掌握该模式的结构;
2、能够利用模板方法模式解决实际问题。

[实验任务一]:数据库连接
对数据库的操作一般包括连接、打开、使用、关闭等步骤,在数据库操作模板类中我们定义了connDB()、openDB()、useDB()、closeDB()四个方法分别对应这四个步骤。对于不同类型的数据库(如SQL Server和Oracle),其操作步骤都一致,只是连接数据库connDB()方法不同,现使用模板方法模式对其进行设计。
实验要求:
1.画出对应的类图;
2.提交源代码;
3.注意编程规范。

image

public abstract class DBOperator {
public abstract void connDB();
public void openDB() {
System.out.println("打开数据库");
}
public void useDB() {
System.out.println("使用数据库");
}
public void closeDB() {
System.out.println("关闭数据库");
}
public void process() {
this.connDB();
this.openDB();
this.useDB();
this.closeDB();
}
}

public class OracleDBOperator extends DBOperator{

@Override
public void connDB() {// TODO Auto-generated method stubSystem.out.println("连接Oracle数据库");
}

}

public class SQLServerDBOperator extends DBOperator{

@Override
public void connDB() {// TODO Auto-generated method stubSystem.out.println("连接SQLServer数据库");
}

}

public class Client {

public static void main(String[] args) {// TODO Auto-generated method stubDBOperator db;db=new OracleDBOperator();db.process();System.out.println("-----------------");db=new SQLServerDBOperator();db.process();
}

}

实验 25:访问者模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解访问者模式的动机,掌握该模式的结构;
2、能够利用访问者模式法解决实际问题。

[实验任务一]:打包员
在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。
实验要求:
1.画出对应的类图;
2.提交源代码;
3. 注意编程规范。

image

include

include

include

using namespace std;

class Product;
class Book;
class Apple;

class Visitor
{
protected:
string name;
public:
void SetName(string name) {
this->name = name;
}
virtual void Visit(Apple *apple) {};
virtual void Visit(Book *book) {};
};

class Product
{
public:
// Methods
virtual void Accept(Visitor *visitor) {};
};

// "ConcreteElement"
class Apple : public Product {
public:

void Accept(Visitor *visitor) {
visitor->Visit(this);
}
};

class Book :public Product {
public:
void Accept(Visitor* visitor) {
visitor->Visit(this);
}
};

class Customer : public Visitor {
public:
void Visit(Book *book) {
cout << "顾客" << name << "买书" << endl;
}

void Visit(Apple *apple) {
cout << "顾客" << name << "选苹果" << endl;
}
};

class Saler : public Visitor {
public:
void Visit(Book *book) {
cout << "收银员" << name << "直接计算书的价格" << endl;
}

void Visit(Apple *apple) {
cout << "收银员" << name << "给苹果过秤,然后计算其价格" << endl;
}
};

class Packer : public Visitor {
public:
void Visit(Book *book) {
cout << "打包员" << name << "给书打包" << endl;
}

void Visit(Apple *apple) {
cout << "打包员" << name << "给苹果打包" << endl;
}
};

// "ObjectStructure"
class BuyBasket
{
private:
list<Product*> products;

public:

void Attach(Product *product)
{
products.push_back(product);
}

void Detach(Product *product)
{
products.remove(product);
}

void Accept(Visitor visitor)
{
for (std::list<Product
>::iterator it = products.begin(); it != products.end(); ++it)
(*it)->Accept(visitor);
}
};

int main()
{
BuyBasket *buybasket = new BuyBasket();

Product* apple = new Apple();
Product* book = new Book();

buybasket->Attach(apple);
buybasket->Attach(book);

Customer customer = new Customer();
customer->SetName("张三");
Saler
saler = new Saler();
saler->SetName("李四");
Packer* packer = new Packer();
packer->SetName("王五");

// Employees are visited
cout << "----customer----" << endl;
buybasket->Accept(customer);

cout << "----saler----" << endl;
buybasket->Accept(saler);

cout << "----packer----" << endl;
buybasket->Accept(packer);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/986325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

降本增效进入深水区:2025 中国企业最值得关注的生成式 AI 成本效益方案

一|为什么“成本效益”成为生成式 AI 项目成败的关键? 2024–2025 年,生成式 AI 正式进入企业级落地阶段:智能客服、知识库问答、合同审核、财务流程自动化、行业 Agent、内容生成都在加速推进。 但越往后走,越多…

2025年靠谱的纪念币售卖机高评价厂家推荐榜

2025年靠谱的纪念币售卖机高评价厂家推荐榜 开篇:行业背景与市场趋势 近年来,随着纪念币收藏市场的持续升温,纪念币售卖机作为一种便捷、高效的零售终端设备,逐渐成为各大商场、博物馆、景区及金融机构的热门选择…

一键降重降AI,学术创作高效加速器 - BUAA

毕业季的校园里,论文查重的焦虑如同初夏的热浪般席卷而来。当“翟天临,你睡了吗?”这句调侃又一次在学生群体中刷屏,无数毕业生正与查重系统展开一场惊心动魄的“攻防战”。如今,不仅重复率让人神经紧绷,新增的A…

实用指南:MyBatis完整教程IDEA版(1)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年质量好的纪念章售卖机最新TOP厂家排名

2025年质量好的纪念章售卖机TOP厂家排名 行业背景与市场趋势 随着自助零售行业的快速发展,纪念章售卖机作为细分市场的重要品类,近年来需求显著增长。纪念章不仅具有收藏价值,还广泛应用于旅游景点、博物馆、体育…

如何零成本验证生成式 AI?中国企业可用的免费试用平台全解析

一|为什么“免费试用”成为中国企业落地生成式 AI 的第一步? 过去一年,越来越多中国企业开始把生成式 AI 引入业务链路:智能客服、内部知识库、营销内容生成、RAG 系统、行业 Agent、预测与自动化处理等场景都进入…

中国企业如何选择 NLP 大模型?2025 最值得关注的生成式 AI 能力图谱

一|为什么中国企业在 2025 年重新关注 NLP 大模型? 过去一年,“让内容读得懂”“让文档答得出”“让客服自动回复”“让知识库变得可对话”已经成为中国企业最优先推进的智能化任务。 而支撑这些场景的核心,就是 N…

2025年口碑好的自动寻址售货机厂家推荐及选购指南

2025年口碑好的自动寻址售货机厂家推荐及选购指南行业背景与市场趋势随着人工智能、物联网技术的快速发展,自动寻址售货机行业正迎来前所未有的增长机遇。根据市场研究数据显示,2024年全球智能售货机市场规模已突破5…

实时数据时代:哪些生成式 AI 工具最适合中国企业做分析与洞察?

一|为什么实时数据分析成为中国企业的刚需? 在 2025 年的数字化竞争中,中国企业已经从“是否拥有数据”走向“是否能实时理解数据、立即采取行动”。 无论是制造、零售、金融、能源,还是客服、供应链、物流等行业,…

2025年比较好的储能展会搭建/展会实力优选榜

2025年储能展会搭建/展会实力优选榜 行业背景与市场趋势 随着全球能源转型加速,储能技术作为可再生能源规模化应用的关键支撑,正迎来爆发式增长。据彭博新能源财经(BNEF)预测,2025年全球储能市场规模将突破1000…

推荐几家国内商用咖啡机:从场景适配到性能解析

在商业服务场景中,商用咖啡机的选择直接关系到饮品出品效率与消费者体验。无论是连锁餐饮、办公空间还是酒店大堂,一台适配场景需求的咖啡机不仅能提升服务质量,更能为运营环节注入稳定支持。国内商用咖啡机品牌近年…

cloudevents + jmespath 简单规则执行

cloudevents + jmespath 简单规则执行实际上属于一个简单的业务场景,数据实体基于了cloudevents,但是希望进行里边数据的check,对于不用的check 结果会有一些action(比如发送通知等),以下是一个简单实现示例 参考…

开发者友好度比模型更重要:哪些生成式 AI 平台真正提供了全面文档与教程?

一|文档质量,正在成为中国开发者选择生成式 AI 平台的决定性因素 过去一年,中国开发者在构建 RAG、聊天助手、企业知识库、智能客服、营销自动化、行业 Agent 等系统时遇到的最大问题,不是模型能力不足,而是: 文…

2025年口碑好的自动寻址售货机/饮料自动售货机厂家推荐及采购参考

2025年口碑好的自动寻址售货机/饮料自动售货机厂家推荐及采购参考 行业背景与市场趋势 随着新零售概念的深入发展,自动售货机行业迎来了快速增长期。据市场研究数据显示,2025年全球自动售货机市场规模预计将突破30…

2025年12月铝箔袋厂家推荐榜单:知名企业综合实力与用户口碑分析

在选择铝箔袋厂家的过程中,许多用户面临着产品质量不稳定、交货周期长或服务响应慢等痛点。作为包装行业的重要分支,铝箔袋厂家需兼顾材料性能、生产工艺与定制化服务能力。根据行业数据显示,铝箔袋市场需求近年来保…

2025 中国企业最关心的问题:哪些生成式 AI 平台符合数据隐私法规?

一|生成式 AI 在中国落地,合规已经成为第一门槛 过去一年里,生成式 AI 已经深入中国企业的核心业务场景:客服、知识管理、供应链、营销、自动化办公、财务流程、制造监控等。 这些应用背后,都涉及大量个人信息、业…

全自动商用咖啡机国产品牌推荐:聚焦场景适配与技术实力

随着咖啡文化在商业场景的渗透,咖啡馆、连锁便利、酒店餐饮等场所对高效咖啡制作设备的需求日益凸显。全自动商用咖啡机因能简化操作流程、适配高频使用场景,成为众多商业场所的选择。近年来,国产品牌在技术研发与场…

2025年12月铝箔袋厂家推荐榜单:主流企业综合对比与选择指南

随着包装行业对功能性材料需求的提升,铝箔袋因其优异的阻隔性能和耐用性成为食品、电子、医疗等领域的首选包装方案。企业在选择铝箔袋厂家时,通常需要平衡产品质量、交付周期、成本效益及定制化服务能力。当前行业竞…

2025年热门的机器人展台搭建/科技展台搭建权威榜

2025年热门的机器人展台搭建/科技展台搭建权威榜行业背景与市场趋势随着全球科技产业的蓬勃发展,机器人技术与人工智能应用已成为推动第四次工业革命的核心力量。据国际机器人联合会(IFR)数据显示,2024年全球机器人市…

全自动商用咖啡机品牌排名:商业场景设备选择的品牌参考

在商业运营场景中,全自动商用咖啡机作为提升服务效率与顾客体验的关键设备,其性能稳定性、功能适配性与品牌服务体系备受关注。品牌排名往往反映了市场对产品综合实力的认可,包括技术成熟度、场景适配能力及长期使用…