当前位置: 首页 > news >正文

设计模式——外观模式

外观模式类似迪米特法则,外观模式旨在将复杂的操作转化为一个接口给用户调用,省去了客户端细节的代码编写,以下的功能是存在三种模式,可选择开启或关闭,实现每一种功能需要开关不同的模式,如果将这些代码交给客户端编写,会有些麻烦,不如直接把一系列操作封装成一个类并提供接口:

class mode1
{
public:
	void on()
	{
		cout << "开启" << endl;
	}
	void off()
	{
		cout << "关闭" << endl;
	}
};
class mode2
{
public:
	void on()
	{
		cout << "开启" << endl;
	}
	void off()
	{
		cout << "关闭" << endl;
	}
};
class mode3
{
public:
	void on()
	{
		cout << "开启" << endl;
	}
	void off()
	{
		cout << "关闭" << endl;
	}
};
class One_click_mode
{
public:
	void start()
	{
		m1->on();
		m2->off();
		m3->on();
	}
	~One_click_mode() 
	{
		delete m1;
		delete m2;
		delete m3;
	}
private:
	mode1* m1 = new mode1;
	mode2* m2 = new mode2;
	mode3* m3 = new mode3;
};
void test()
{
	One_click_mode* ocm = new One_click_mode;
	ocm->start();
}
int main()
{
	test();
	return 0;
}

相关文章:

  • Webpack配置与运行基础教程
  • 初学者学习51还是STM32
  • 猴子吃桃问题(python版)
  • (学习日记)2024.03.03:UCOSIII第五节:常用汇编指令+OS初始化+启动任务+任务切换
  • 算法:动态规划
  • SAP PP学习笔记04 - BOM2 -通过Serial来做简单的BOM变式配置,副明细,BOM状态,BOM明细状态,项目种类,递归BOM
  • 在java java.util.Date 已知逝去时间怎么求年月日 数学计算不用其他方法
  • 命名空间(namespace)
  • nginx使用详解--动静分离
  • 每天学习2小时——黑客(网络安全)技术
  • [LeetBook]【学习日记】寻找链表相交节点
  • day57 集合 List Set Map
  • 服务器git安装python包失败,如何手动下载github项目包并安装到虚拟环境中(简单易懂)
  • 【JavaScript 漫游】【029】GlobalEventHandlers 接口总结
  • 在Spring Boot中如何实现异常处理?
  • 云计算 2月28号 (linux的磁盘分区)
  • LeetCode-第14题-最长公共前缀
  • nextjs13如何进行服务端渲染?
  • wordpress 开源主题
  • k8s学习-数据管理之nfs手动搭建
  • 男子称喝中药治肺结节三个月后反变大增多,自贡卫健委回应
  • 滁州一交通事故责任认定引质疑:民警和司法鉴定人被处罚,已中止诉讼
  • 特写|“三峡千古情”出圈,一场演出给宜昌留下更多游客
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告
  • 大家聊中国式现代化|彭羽:为国家试制度探新路,推进高水平对外开放
  • 北大强基计划招生简章发布,笔试部分考试科目有变化