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

江门公司网站建设/网上怎么推销自己的产品

江门公司网站建设,网上怎么推销自己的产品,wordpress 翻页画册,wordpress 南非政府介绍Java装饰模式 装饰模式用于给对象动态或静态地附加额外的责任。装饰器给原对象提供了额外功能接口。 实现该模式,我们更倾向于使用组合而不是继承,因为可以减少每个装饰元素子类化的开销。递归调用该模式可以根据需要对原对象进行多次装饰。 示例说…

介绍Java装饰模式

装饰模式用于给对象动态或静态地附加额外的责任。装饰器给原对象提供了额外功能接口。
实现该模式,我们更倾向于使用组合而不是继承,因为可以减少每个装饰元素子类化的开销。递归调用该模式可以根据需要对原对象进行多次装饰。

示例说明

假设我们有一个圣诞树对象需要装饰,装饰不能改变原对象,仅给对象增加额外功能。我们打算增加一些如花环(garland)、金属丝(tinsel)、树顶(treetop)、泡泡灯(bubble light)等:

https://www.baeldung.com/wp-content/uploads/2017/09/8poz64T.jpg该实现过程我们遵循GOF设计和命名规范,首先创建ChristmasTree 接口和其实现:

public interface ChristmasTree {String decorate();
}

接口实现如下:

public class ChristmasTreeImpl implements ChristmasTree {@Overridepublic String decorate() {return "Christmas tree";}
}

现在给原对象创建抽象类TreeDecorator ,也实现ChristmasTree接口并包含原对象。其实现方法简单调用decorate()方法:

public abstract class TreeDecorator implements ChristmasTree {private ChristmasTree tree;public TreeDecorator(ChristmasTree tree) {this.tree = tree;}@Overridepublic String decorate() {return tree.decorate();}
}

我们现在创建装饰元素。它们都继承抽象TreeDecorator类并根据需求修改decorate()方法:

public class BubbleLights extends TreeDecorator {public BubbleLights(ChristmasTree tree) {super(tree);}public String decorate() {return super.decorate() + decorateWithBubbleLights();}private String decorateWithBubbleLights() {return " with Bubble Lights";}
}

其他的装饰元素一样:

public class Garland extends TreeDecorator {public Garland(ChristmasTree tree) {super(tree);}public String decorate() {return super.decorate() + decorateWithGarland();}private String decorateWithGarland() {return " with Garland";}
}

下面测试结果为True:

@Test
public void whenDecoratorsInjectedAtRuntime_thenConfigSuccess() {ChristmasTree tree1 = new Garland(new ChristmasTreeImpl());assertEquals(tree1.decorate(), "Christmas tree with Garland");ChristmasTree tree2 = new BubbleLights(new Garland(new Garland(new ChristmasTreeImpl())));assertEquals(tree2.decorate(), "Christmas tree with Garland with Garland with Bubble Lights");
}

对第一个tree1对象,我们仅适用Garland进行装饰。而第二个tree2对象装饰一个BubbleLights 和两个Garlands。该模式让我们可以灵活地在运行时根据需要增加装饰元素。

总结

本文,我们探讨了装饰模式。一般用于下列场景:

  • 一般用于增加、增强,甚至删除对象行为或状态。
  • 只想修改类的单个对象的功能而不改变其他对象。
http://www.lbrq.cn/news/1425421.html

相关文章:

  • 北京顺义网站建设/seo数据是什么意思
  • wordpress模板 微信/企业seo网站推广
  • 布吉做网站/seo公司服务
  • 网站标签怎么做跳转页面/做公司网页
  • 网站开发工程师符号代码/web网页制作成品免费
  • 泉州做网站公司/网络推广运营优化
  • 网站如何做排名靠前/关键词优化有哪些作用
  • 动态网站 教程/手机百度
  • 定制营销型网站公司/深圳百度推广联系方式
  • b2b2c网站系统建设/seo矩阵培训
  • wordpress视频教程 电驴/南昌百度seo
  • 小满crm/山东seo百度推广
  • 怎么免费建设金融网站/制定营销推广方案
  • 哪里可以做网站/哪家公司做推广优化好
  • 网站什么认证对做电商好/搜索引擎优化的方法包括
  • 做众筹网站要什么资质/线上线下一体化营销
  • 免费的行情网站app软件推荐/今天的三个新闻
  • 武汉公司网站推广/新乡网站优化公司推荐
  • 如何做品牌网站设计/福州短视频seo平台
  • 在线制作图片美图/网站排名优化查询
  • 外贸网站推广收费/百度官网首页登录
  • 网站域名续费/搜索引擎下载入口
  • 建设公司网站源码/优化大师优化项目有
  • 网站开发的总结/网站建设包括哪些内容
  • 妇科医院手机网站源码/在线培训平台有哪些
  • wordpress消息通知/长沙专业竞价优化首选
  • 基于j2ee的网站开发设计开题报告/视频号的链接在哪
  • 做销售的去哪个网站应聘/网站开发建站
  • 生日祝福网页链接制作/seo关键词优化案例
  • 网站建设有必要做手机端吗/查淘宝关键词排名软件有哪些
  • expand.exe命令为什么能显示CD.iso的版本信息?
  • [论文阅读] 人工智能 | 当Hugging Face遇上GitHub:预训练语言模型的跨平台同步难题与解决方案
  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • anaconda创建pytorch1.10.0和pytorch2.0.0的GPU环境
  • Langchain入门:文本摘要
  • CTO如何通过录音转写和音频降噪,提升企业远程协作效率?