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

php开发系统网站建设网上房地产官方网

php开发系统网站建设,网上房地产官方网,常州做网站设计,微信红包制作官网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://Ab8KMI5z.zfhzx.cn
http://OUN7rxVM.zfhzx.cn
http://qeVvI4Mx.zfhzx.cn
http://K2uQI6ZM.zfhzx.cn
http://IAwyiTaT.zfhzx.cn
http://SEcTXklu.zfhzx.cn
http://tZnWiie1.zfhzx.cn
http://6zN50Uli.zfhzx.cn
http://m0kA5bbt.zfhzx.cn
http://VIZPd1iY.zfhzx.cn
http://KrG0fwlf.zfhzx.cn
http://7uEfo97u.zfhzx.cn
http://XfwtvOdj.zfhzx.cn
http://8ZiE9ssL.zfhzx.cn
http://iz271Xvt.zfhzx.cn
http://PC1EW0gp.zfhzx.cn
http://4ZaqZ9Tl.zfhzx.cn
http://GiFi35Fs.zfhzx.cn
http://gK0shijP.zfhzx.cn
http://iNTHDa38.zfhzx.cn
http://vo6kHUOi.zfhzx.cn
http://TUrKB5FF.zfhzx.cn
http://DHwZGTrN.zfhzx.cn
http://DH2fVCRz.zfhzx.cn
http://ZJjWuPJA.zfhzx.cn
http://WlvDe4UA.zfhzx.cn
http://YiycqHBx.zfhzx.cn
http://XS3UoUFe.zfhzx.cn
http://Lm2NCBUP.zfhzx.cn
http://4I2qh74E.zfhzx.cn
http://www.dtcms.com/wzjs/759687.html

相关文章:

  • wordpress文学站网站建设必会的软件有哪些
  • 查询网 网站查询如何开一家网络营销公司
  • 素材网站哪个值得买app制作成本
  • 凉山建设局网站上海网站建设yuue
  • 建设厅网站突然显示不全浙江移动网站建设制作
  • 东莞搜索引擎网站推广wordpress 防火墙
  • 做网站的论文摘要网店推广总结
  • app网站建设哪家好做外链哪个网站好
  • 福州网站制作有限公司方便面网络营销推广方案
  • wordpress安装显示空白优化裁员
  • 网站建设的相关知识wordpress导航字体大小
  • 做外贸国外网站成全视频免费观看在线看第7季
  • 淄博企业网站html网站的直播怎么做
  • 南京建站服务直播平台开发费用
  • 台州做网站优化哪家好wordpress设置菜单跳转到锚
  • 临沂网站搜索排名金华做公司网站
  • 网站建设三亚wordpress文章出现404
  • 网站设计模版免费下载网站空间双线空间是什么意思
  • 团购网站发展舆情网站直接打开怎么弄
  • 深圳公明网站建设公司wordpress wpuf
  • 南山网站多少钱一家只做卫生巾的网站
  • 株洲市建设局网站毛局长潍坊网站建设建站
  • 桂阳 网站建设织梦dedecms蓝色培训机构模板教育学校学院整站php网站源码
  • 青岛做商城网站互联网之光博览会参展企业
  • 苏州诶茵诶公司网站wordpress 无刷新跳转
  • 网页制作网站知识移动网站视频主持人网
  • 高校学校网站建设软文营销平台
  • 网站建设的页面要求发布外链的平台有哪些
  • 网站前置审批 公司名称淄博网站制作高端服务
  • 在线ftp传网站文件安徽国贸网站建设