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

找室内效果图的网站做电影网站只放链接算侵权吗

找室内效果图的网站,做电影网站只放链接算侵权吗,达建网站防止爬虫的办法,企业如何推广网站核心思想 装饰器设计模式是一种结构型设计模式,它允许动态地为对象添加额外的行为或职责,而无需修改其原始类。装饰器模式通过创建一个装饰器类来包装原始对象,并在保持原始对象接口一致性的前提下,扩展其功能。 装饰器模式的核…

核心思想

装饰器设计模式是一种结构型设计模式,它允许动态地为对象添加额外的行为或职责,而无需修改其原始类。装饰器模式通过创建一个装饰器类来包装原始对象,并在保持原始对象接口一致性的前提下,扩展其功能。

装饰器模式的核心在于:
​动态扩展功能:在不改变原始对象的情况下,通过装饰器为其添加新的行为。
​组合优于继承:装饰器模式通过组合的方式扩展功能,避免了继承带来的类层次结构复杂化。

使用场景

​动态添加功能:当需要为对象动态地添加功能,并且这些功能可以组合使用时。
​避免子类膨胀:当使用继承会导致子类数量爆炸时,装饰器模式提供了一种更灵活的替代方案。
​扩展第三方库:当无法修改第三方库的代码,但需要为其添加额外功能时。

优点

​灵活性:可以动态地为对象添加或移除功能。
​遵循开闭原则:无需修改原始类,即可扩展其功能。
​避免继承的缺点:通过组合实现功能扩展,避免了继承带来的类层次结构复杂化。

缺点

​复杂性:装饰器模式会引入大量小类,增加了代码的复杂性。
​调试困难:由于装饰器是层层包装的,调试时可能难以追踪到具体的行为。

示例代码

#include <iostream>
#include <memory>
#include <string>// 抽象组件:定义文本接口
class Text {
public:virtual ~Text() = default;virtual std::string render() const = 0;
};// 具体组件:实现基本的文本
class PlainText : public Text {
private:std::string content;public:explicit PlainText(const std::string& content) : content(content) {}std::string render() const override {return content;}
};// 抽象装饰器:继承自 Text,并包含一个 Text 对象的指针
class TextDecorator : public Text {
protected:std::shared_ptr<Text> text;public:explicit TextDecorator(std::shared_ptr<Text> text) : text(std::move(text)) {}std::string render() const override {return text->render();}
};// 具体装饰器:为文本添加加粗格式
class BoldText : public TextDecorator {
public:explicit BoldText(std::shared_ptr<Text> text) : TextDecorator(std::move(text)) {}std::string render() const override {return "<b>" + text->render() + "</b>";}
};// 具体装饰器:为文本添加斜体格式
class ItalicText : public TextDecorator {
public:explicit ItalicText(std::shared_ptr<Text> text) : TextDecorator(std::move(text)) {}std::string render() const override {return "<i>" + text->render() + "</i>";}
};// 具体装饰器:为文本添加下划线格式
class UnderlineText : public TextDecorator {
public:explicit UnderlineText(std::shared_ptr<Text> text) : TextDecorator(std::move(text)) {}std::string render() const override {return "<u>" + text->render() + "</u>";}
};int main() {// 创建原始文本std::shared_ptr<Text> text = std::make_shared<PlainText>("Hello, World!");std::cout << text->render() << std::endl;// 动态添加装饰器text = std::make_shared<BoldText>(text);std::cout << text->render() << std::endl;text = std::make_shared<ItalicText>(text);std::cout << text->render() << std::endl;text = std::make_shared<UnderlineText>(text);std::cout << text->render() << std::endl;return 0;
}

输出结果

Hello, World!
<b>Hello, World!</b>
<i><b>Hello, World!</b></i>
<u><i><b>Hello, World!</b></i></u>

代码解析

Text 类
抽象组件,定义了文本的接口 render()。
PlainText 类
具体组件,实现了基本的文本渲染。
TextDecorator 类
抽象装饰器,继承自 Text,并包含一个 Text 对象的指针。
提供了默认的 render() 实现,直接调用被装饰对象的 render() 方法。
BoldText、ItalicText、UnderlineText 类
具体装饰器,继承自 TextDecorator,重写了 render() 方法,为文本添加额外的格式。
main 函数
创建了一个原始文本对象 PlainText。
通过装饰器动态地为文本添加加粗、斜体和下划线格式。
最终渲染文本并输出结果。

装饰器模式通过动态地为对象添加额外的行为,提供了一种灵活的功能扩展方式。它避免了继承带来的类层次结构复杂化,同时遵循了开闭原则。在 C++ 中,可以通过组合和继承机制轻松实现装饰器模式。

http://www.dtcms.com/wzjs/580800.html

相关文章:

  • 仿网站建设单位宣传册设计样本
  • 西安网站建设全包怎么做国外的网站吗
  • it前端是做网站的wordpress 模板 中文
  • 自己做网站地址代理记账如何获取客户
  • 高端网站定制开发深圳灰色风格的网站
  • 实木餐桌椅移动网站建设军事热点事件2022
  • 网站做百度竞价企业培训课程视频
  • 青岛万维网站设计wordpress class
  • 网站 备案 初审简单好看个人主页网站模板
  • 要看网站是多少wordpress 自定义翻页
  • 大气医院网站源码lamp网站怎么建设
  • 软件网站模板wordpress调分类目录的方法
  • 江门骏域网站建设凌风wordpress百度云
  • 村建站属于哪个部门网站为什么要挂服务器
  • 网站优化主要优化哪些地方网站设计 扁平化
  • 免费简单网站无锡建设网站制作
  • 网站 公司备案与个人备案文明网站的建设与管理几点思考
  • 包头市做网站公司网络维护合同
  • 建站工具 营销找工作用什么平台最好
  • 网站设计制作代码网站备案关闭网站
  • 徐州手机网站营销公司哪家好展示性公司网站html
  • 东莞网站网络公司国家示范校建设成果网站
  • 植物网站设计方案vi设计合同
  • 网站专题页面文案设计在大网站做网页广告需要多少钱
  • 集团网站建设特色做网站设计可以参照别人的么
  • 建站之星官网 discuz重庆拓达建设集团网站
  • vs做网站开发网站建设开发三层架构
  • 网站制作手机模板网站出现风险如何处理方法
  • 视频网站VIP卡怎么做赠品麻江网站建设
  • 西安做网站印象网络dedecms做的网站网站中的图片总是被同一ip恶意点击