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

网站开发+兼职项目河南住房与城乡建设部网站

网站开发+兼职项目,河南住房与城乡建设部网站,清华大学网站建设方案,申请个人网站多少钱装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象动态地添加新功能,同时又不改变其结构。装饰模式通过将对象放入包装器中来实现,在包装器中可以动态地添加功能。 在装饰模式中,通常会有…

装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象动态地添加新功能,同时又不改变其结构。装饰模式通过将对象放入包装器中来实现,在包装器中可以动态地添加功能。

在装饰模式中,通常会有四个角色:

  1. Component(组件):定义一个对象接口,可以动态地给这些对象添加职责。
  2. ConcreteComponent(具体组件):实现Component接口,并定义需要被装饰的类。
  3. Decorator(装饰器):持有一个Component对象的引用,并定义一个与Component接口一致的接口。
  4. ConcreteDecorator(具体装饰器):扩展Decorator类,覆盖其中的方法,以添加新的功能。
#include <iostream>// Component(组件)
class Coffee {
public:virtual void makeCoffee() = 0;
};// ConcreteComponent(具体组件)
class SimpleCoffee : public Coffee {
public:void makeCoffee() override {std::cout << "Making simple coffee" << std::endl;}
};// Decorator(装饰器)
class CoffeeDecorator : public Coffee {
protected:Coffee* coffee;public:CoffeeDecorator(Coffee* coffee) : coffee(coffee) {}void makeCoffee() override {if (coffee) {coffee->makeCoffee();}}
};// ConcreteDecorator(具体装饰器)
class MilkDecorator : public CoffeeDecorator {
public:MilkDecorator(Coffee* coffee) : CoffeeDecorator(coffee) {}void makeCoffee() override {if (coffee) {coffee->makeCoffee();addMilk();}}void addMilk() {std::cout << "Adding milk" << std::endl;}
};// ConcreteDecorator(具体装饰器)
class SugarDecorator : public CoffeeDecorator {
public:SugarDecorator(Coffee* coffee) : CoffeeDecorator(coffee) {}void makeCoffee() override {if (coffee) {coffee->makeCoffee();addSugar();}}void addSugar() {std::cout << "Adding sugar" << std::endl;}
};int main(int argc, char *argv[])
{// 创建一个简单的咖啡对象Coffee* simpleCoffee = new SimpleCoffee();// 使用装饰器为咖啡添加牛奶Coffee* milkCoffee = new MilkDecorator(simpleCoffee);// 制作带牛奶的咖啡milkCoffee->makeCoffee();// 使用装饰器为牛奶咖啡添加糖Coffee* milkSugarCoffee = new SugarDecorator(milkCoffee);milkSugarCoffee->makeCoffee();delete simpleCoffee;delete milkCoffee;delete milkSugarCoffee;return 0;
}/*
在这个示例中,Coffee 是一个抽象基类,SimpleCoffee 是具体的咖啡类,CoffeeDecorator 是装饰器类,MilkDecorator 是具体的装饰器类用于添加牛奶。通过装饰器模式,我们可以动态地给咖啡对象添加新的功能,而不需要修改原有的类结构。
*/

觉得有帮助的话,打赏一下呗。。

           

http://www.yayakq.cn/news/480374/

相关文章:

  • 医院网站绿色模板网站侧边栏模板
  • 怎么更改网站首页图片尺寸帮别人做网站
  • 做设备出口网站济南网站建设 选搜点o
  • 用asp做网站课程狮岭箱包外发加工网
  • 如何建立自己的公众号苏州网站关键词优化
  • 沈阳的网站制作公司wordpress的api接口
  • 如何修改网站备案信息网站设计自已申请
  • 个人网站也要备案吗网页建站建设教程
  • 上海中学门户网站登陆昆明建设招聘信息网站
  • 学做软件的网站软件开发工作稳定吗
  • iis7建网站网站后台管理系统怎么用
  • 做网站需要的课程网络优化的基本流程
  • 东莞在哪里学网站建设移动深圳网站
  • 昌吉网站建设公司七星彩网站建设
  • 江宁网站制作手机开发者网站
  • 做网站服务器收费吗wordpress中的网易云
  • 打码网站建设好看手机网站推荐
  • 网站可以随便创建么以下哪些是网页制作工具
  • 门户网站导航建设方案网络服务器的配置与应用心得
  • 西安做网站公司玖佰网络渭南建设用地规划查询网站
  • 网站建设为了什么爱心互助网站开发
  • 网站备案能不能出现世界上海网页设计报价
  • 网站实名认证怎么做响应式网站软件
  • 网站平台搭建和维护需要什么电子商务网站需求分析
  • 网站制作是什么公司北京网站维护
  • 音乐建设网站四川建设网是什么单位
  • 网站做任务 炸金花工商网站注册公司
  • 申请自助建站万户网络合肥
  • 网站开发怎么兼容浏览器指数型基金是什么意思
  • 外贸公司网站建设费会计科目淘宝运营培训内容