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

用电脑建立网站浙江建设工程造价信息网站

用电脑建立网站,浙江建设工程造价信息网站,找别人做的淘客网站 会不会有问题,浙江建设银行官网站纪念币1.装饰器模式介绍装饰器模式是一种结构型设计模式,允许你动态地给对象添加行为,而无需修改其代码。它的核心思想是将对象放入一个“包装器”中,这个包装器提供了额外的功能,同时保持原有对象的接口不变。想象一下,你有…

1.装饰器模式介绍

装饰器模式是一种结构型设计模式,允许你动态地给对象添加行为,而无需修改其代码。它的核心思想是将对象放入一个“包装器”中,这个包装器提供了额外的功能,同时保持原有对象的接口不变。

想象一下,你有一个简单的咖啡,你想让它变得更特别。你可以给它加奶、加糖、加香草等等,但咖啡本身还是咖啡。这些额外的东西不会改变咖啡的本质,只是让它更丰富。

装饰器模式有四个角色:

  1. 抽象组件(Component):可以是一个接口或者抽象类,规定了被装饰对象的行为;
  2. 具体组件(ConcreteComponent):实现或继承Component的一个具体对象,也即被装饰对象
  3. 抽象装饰器(Decorator):一般是抽象类, 继承或实现抽象组件Component;其内部必然有一个属性指向Component组件对象;通过其子类 ConcreteDecorator 扩展具体构件的功能。
  4. 具体装饰器(ConcreteDecorator):Decorator的具体实现类,理论上每个ConcreteDecorator 都扩展了 Component 对象的一种功能;

四个角色的关系:

2.代码演示

抽象组件(Component):咖啡接口定义了咖啡有“描述”和“价格”两个方法

// 基础接口
interface Coffee {String getDescription();double getCost();
}

具体组件(ConcreteComponent): 咖啡实现类,是需要被装饰的对象

// 具体的咖啡类
class SimpleCoffee implements Coffee {@Overridepublic String getDescription() {return "Simple Coffee";}@Overridepublic double getCost() {return 5.0;}
}

抽象装饰器(Decorator):抽象类,实现咖啡接口,内部有一个属性指向Coffee对象

// 装饰器基类
abstract class CoffeeDecorator implements Coffee {//内部必然有一个属性指向Component组件对象protected Coffee coffee;public CoffeeDecorator(Coffee coffee) {this.coffee = coffee;}@Overridepublic String getDescription() {return coffee.getDescription();}@Overridepublic double getCost() {return coffee.getCost();}
}

具体装饰器(ConcreteDecorator):每个Coffee装饰器都扩展了Coffee对象的一种功能

// 具体的装饰器类
class MilkDecorator extends CoffeeDecorator {public MilkDecorator(Coffee coffee) {super(coffee);}@Overridepublic String getDescription() {return coffee.getDescription() + ", Milk";}@Overridepublic double getCost() {return coffee.getCost() + 1.5;}
}class SugarDecorator extends CoffeeDecorator {public SugarDecorator(Coffee coffee) {super(coffee);}@Overridepublic String getDescription() {return coffee.getDescription() + ", Sugar";}@Overridepublic double getCost() {return coffee.getCost() + 0.5;}
}

使用装饰器:每个装饰器都可以单独或组合使用,给咖啡增加不同的特性。通过这种方式,原来的咖啡类保持不变,而我们可以灵活地为它添加新功能

// 使用装饰器模式
public class CoffeeShop {public static void main(String[] args) {//创建简单的咖啡类SimpleCoffeeCoffee coffee = new SimpleCoffee();System.out.println(coffee.getDescription() + " $" + coffee.getCost());//通过装饰器MilkDecorator给咖啡加奶coffee = new MilkDecorator(coffee);System.out.println(coffee.getDescription() + " $" + coffee.getCost());//通过装饰器SugarDecorator给咖啡加糖coffee = new SugarDecorator(coffee);System.out.println(coffee.getDescription() + " $" + coffee.getCost());}
}


文章转载自:

http://uR9bC50e.rckdq.cn
http://PPaHVNCE.rckdq.cn
http://Z75KAWFk.rckdq.cn
http://mYKYOhlh.rckdq.cn
http://CSIY4Cv2.rckdq.cn
http://ckVLuA61.rckdq.cn
http://wYzhLBdj.rckdq.cn
http://pDsVgtCB.rckdq.cn
http://Ls2nUqVb.rckdq.cn
http://21asLSuD.rckdq.cn
http://L9N0E2t8.rckdq.cn
http://7mnPOXD2.rckdq.cn
http://TkQwTbUA.rckdq.cn
http://hX7WUNty.rckdq.cn
http://zGakSdeg.rckdq.cn
http://6f9HcFzF.rckdq.cn
http://8rE6jSdE.rckdq.cn
http://f5TFNV0u.rckdq.cn
http://MMyqF2Xo.rckdq.cn
http://CGcnvVsm.rckdq.cn
http://e2f3Itqn.rckdq.cn
http://VyxfETa0.rckdq.cn
http://c2hHlGwT.rckdq.cn
http://kf2vz6RK.rckdq.cn
http://knzOQmhP.rckdq.cn
http://qwKsRTjf.rckdq.cn
http://ZsgpkQv8.rckdq.cn
http://GUQHurGQ.rckdq.cn
http://Fkzdx3dZ.rckdq.cn
http://Yj0XjRus.rckdq.cn
http://www.dtcms.com/wzjs/652319.html

相关文章:

  • dw做的网页在网站图片不显示东莞响应式网站建设
  • jquery 网站后台模板全网网络营销推广
  • 网站app免费生成软件下载学院网站建设招标书
  • h5手机网站建设哪家好全国企业信息系统查询系统
  • 湖南监理建设协会网站徐州关键词优化平台
  • 营销型网站建设文章软件定制项目
  • 佛山外英语网站制作群辉可以做网站服务器吗
  • 酒泉网站建设平台小程序定制开发团队
  • 设计网站公司搜索y湖南岚鸿知名网站开发时间进度
  • 建设银行集团网站网站空间商排行榜
  • 如何推广英文网站怎么做自己的企业网站
  • 湖南专业网站建设莆田网站建设优化
  • 建设一个充电站需要多少钱临沂做网站找哪家好
  • 咸阳做网站公司电话做设计兼职网站
  • 太原网站建设vhuashi濮阳市城乡一体化示范区主任
  • 庆阳网站设计费用手工制作网站
  • 网站前台的功能模块企业三合一建站公司具体该怎么找
  • godaddy如何创建网站怎么查域名的注册人
  • 线上渠道推广怎么做企业新网站seo推广
  • 游戏平台网站制作网站内容和备案不一样
  • 西安建站wordpress 编辑权限 发文章
  • 电子商务网站的建设方式免费企业cms建站系统
  • 中国最好的建设网站零基础视频制作剪辑培训
  • 网站建设技术教程视频项目建设进度
  • 零售客户电商网站登录厦门网站建站公司
  • 那里可以建设网站做短链的网站
  • 福建省建设资格管理中心网站广州建筑集团有限公司品牌
  • 青岛三吉互联网站建设公司自己做网站去哪买服务器
  • 广东智能网站建设费用最新新闻热点事件看法
  • 怎样能创建一个网站wordpress 爬虫 视频