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

安徽合肥制作网站公司石家庄刚刚发生的事

安徽合肥制作网站公司,石家庄刚刚发生的事,无锡高端网站设计建设,建设网站怎么设置网站页面大小制作程序化装饰花纹图案装饰图案是广泛使用的结构图案之一。 此模式在运行时动态更改对象的功能#xff0c;而不会影响对象的现有功能。 简而言之#xff0c;此模式通过包装将附加功能添加到对象。 问题陈述#xff1a; 想象一个场景#xff0c;我们有一个比萨饼#xff… 制作程序化装饰花纹图案 装饰图案是广泛使用的结构图案之一。 此模式在运行时动态更改对象的功能而不会影响对象的现有功能。 简而言之此模式通过包装将附加功能添加到对象。 问题陈述 想象一个场景我们有一个比萨饼已经用番茄和奶酪烤了。 之后您只需要记住您需要根据客户的选择添加一些其他浇头。 因此您需要在旅途中再添加一些配料例如鸡肉和胡椒粉。 意图 动态地从对象中添加或删除其他功能或职责而不会影响原始对象。 有时需要通过子类添加功能而无法添加功能因为这可能会创建子类的负​​载。 解 因此在这种情况下我们不是在使用继承为对象例如披萨添加其他功能而是在使用合成。 当我们不想使用继承而是使用合成时此模式很有用。 结构体 装饰器设计模式结构 以下是“装饰器设计”模式的参与者 组件 –这是包装程序在运行时可以承担与其相关的其他职责。 具体组件 –是添加了附加功能的原始对象。 装饰器 -这是一个抽象类其中包含对组件对象的引用并且还实现了组件接口。 具体的装饰器 -它们扩展装饰器并在Component类的顶部构建其他功能。 例 装饰器设计模式示例 在上面的示例中Pizza类充当ComponentBasicPizza是需要装饰的具体组件。 PizzaDecorator充当Decorator抽象类其中包含对Pizza类的引用。 ChickenTikkaPizza是ConcreteDecorator它为Pizza类构建了附加功能。 让我们总结一下实现装饰器设计模式的步骤 创建一个我们要装饰的BasicPizza混凝土组件的接口。 创建一个抽象类PizzaDecorator其中包含Pizzadecorated接口的引用字段。 注意装饰器PizzaDecorator必须扩展相同的装饰Pizza接口。 现在我们需要在decorator的构造函数中传递要装饰的Pizza对象。 让我们创建混凝土装饰器ChickenTikkaPizza它应该提供附加浇头的附加功能。 Concrete DecoratorChickenTikkaPizza应该扩展PizzaDecorator抽象类。 将装饰器bakePizza的方法重定向到装饰类的核心实现。 覆盖需要更改行为的方法bakePizza例如添加Chicken Tikka浇头。 让客户端类通过在Concrete ComponentBasicPizza的帮助下创建Concrete DecoratorChickenTikkaPizza来创建Component typePizza对象。 简而言之要记住新组件混凝土组件混凝土装饰器 比萨披萨新的ChickenTikkaPizza新的BasicPizza; 代码示例 BasicPizza.java public String bakePizza() {return Basic Pizza;} Pizza.java public interface Pizza {public String bakePizza(); } PizzaDecorator.java public abstract class PizzaDecorator implements Pizza {Pizza pizza;public PizzaDecorator(Pizza newPizza) {this.pizza newPizza;}Overridepublic String bakePizza() {return pizza.bakePizza();} } ChickenTikkaPizza.java public class ChickenTikkaPizza extends PizzaDecorator {public ChickenTikkaPizza(Pizza newPizza) {super(newPizza);}public String bakePizza() {return pizza.bakePizza() with Chicken topping added;} } 客户端程序 public static void main(String[] args) {Pizza pizza new ChickenTikkaPizza(new BasicPizza());System.out.println(pizza.bakePizza());}优点 装饰器设计模式比标准继承提供了更大的灵活性。 继承还以静态方式扩展了父类责任。 但是装饰器允许以动态方式执行此操作。 退税 代码调试可能很困难因为此模式会在运行时添加功能。 有趣的一点 适配器模式将不同的接口插入在一起而装饰器模式则增强了对象的功能。 与装饰器模式不同策略模式无需更改即可更改原始对象。 代理模式控制对对象的访问时装饰器模式增强了对象的功能。 Composite和Decorator模式都使用相同的树结构但是两者之间存在细微的差异。 当我们需要将具有相似行为的一组对象保留在另一个对象中时可以使用复合模式。 但是当我们需要在运行时修改对象的功能时会使用装饰器模式。 Java API中有许多装饰器模式的实时示例。 java.io.BufferedReader; 如果我们看到BufferedReader的构造函数那么我们可以看到BufferedReader通过添加更多功能例如在reader类中不存在的readLine包装了Reader类。 关于客户端如何使用装饰器模式我们可以使用与上述示例相同的格式。new BufferedReadernew FileReadernew File“ File1.txt”; 同样 BufferedInputStream是装饰对象FileInputStream的装饰器。 BufferedInputStream bs new BufferedInputStreamnew FileInputStreamnew File“ File1.txt”; 参考 四人帮–在Idiotechie博客上使用JCG合作伙伴 Mainak Goswami的装饰设计图案进行装饰 。 翻译自: https://www.javacodegeeks.com/2012/12/decorate-with-decorator-design-pattern.html制作程序化装饰花纹图案
http://www.zqtcl.cn/news/337195/

相关文章:

  • 瑞安微信网站软件公司网站设计与制作
  • 片头网站网站建设服装在线商城实训报告
  • wordpress做企业网站怎样做网页推广
  • 网站建设售后服务安全维护企业网站开发 外文文献
  • 网站设计英文翻译系统开发的五个阶段
  • 成华区门户网站拍卖网站开发多少钱
  • html设计网站wordpress 评论增加字段
  • 搭建正规网站小程序开发难不难
  • 做静态网站用什么软件自己编写代码建设微网站
  • 备案网站ipoa系统主要干什么的
  • 杭州专业网站建设在哪里wordpress主题重置
  • 仿wordpress站赣州专业网站推广
  • 网站开发需要多长时间python链接wordpress
  • 网上交易网邯郸网站seo
  • wordpress图片后加载外链seo服务
  • 婚庆公司网站建设腾讯广告建站工具
  • 焦作建设厅网站wordpress调用视频播放器
  • 网站版面做好江苏省建设工程设计施工图审核中心网站
  • 智能网站平台wordpress同步头条
  • 做采集的网站有流量吗广州建设学校
  • 建设部网站公告外贸网站建设定制
  • 如何搭建 seo网站上海市住房与城乡建设部网站
  • 百度搜不到自己的网站python云服务器网站开发实例
  • 给企业做网站的业务员优书网没了
  • 江门网站建设方案外包洛阳网站设计哪家专业
  • 电暖怎么做网站办公室平面设计图
  • 全屏网站 功能丽水市企业网站建设 微信营销 影视拍摄
  • 天天爱天天做视频网站网站推送
  • 制作企业网站与app有什么不同化工企业网站建设
  • 东莞企业推广网站专门做黄漫的网站