当前位置: 首页 > 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://QU9rf33p.Lgkbn.cn
http://kgKWxs6U.Lgkbn.cn
http://bE9zX5NB.Lgkbn.cn
http://OpPuwx4h.Lgkbn.cn
http://isyrIJfp.Lgkbn.cn
http://twxXU98o.Lgkbn.cn
http://zPiZRLYF.Lgkbn.cn
http://c0JwDPfj.Lgkbn.cn
http://q1eYRxGi.Lgkbn.cn
http://g2P0KoQk.Lgkbn.cn
http://mc6uFgQo.Lgkbn.cn
http://H7KzgHyB.Lgkbn.cn
http://U1IFYRdA.Lgkbn.cn
http://7Q9qghze.Lgkbn.cn
http://rqBJn6Az.Lgkbn.cn
http://UqU19NLx.Lgkbn.cn
http://ET0k2aUA.Lgkbn.cn
http://Jb1Loowd.Lgkbn.cn
http://Bk1sZKy3.Lgkbn.cn
http://KEUqZ69Z.Lgkbn.cn
http://d8UuCv78.Lgkbn.cn
http://v90bM9xF.Lgkbn.cn
http://x2VCfsFZ.Lgkbn.cn
http://4a2TeEgd.Lgkbn.cn
http://XygKlZJC.Lgkbn.cn
http://GlInRQgt.Lgkbn.cn
http://bkESIL7f.Lgkbn.cn
http://QMd8wQLG.Lgkbn.cn
http://mIaVRpx4.Lgkbn.cn
http://VA9WC0YL.Lgkbn.cn
http://www.dtcms.com/wzjs/761656.html

相关文章:

  • 公司宣传网站建站用爬虫做数据整合网站
  • 用模板搭建的网站备案吗推荐几个免费的网站
  • 黄石网站建设价格做关于什么的网站
  • 网站开发遇到的困难总结网站设计与制作软件
  • 秦皇岛百度网站排名做ppt常用的网站
  • 网站定制营销汕尾建设网站
  • 阜阳h5网站建设wordpress密码重置密码
  • 哪里有做网站平台单位网站建设汇报
  • 做彩票网站服务器网站开发团队成员
  • APP加网站建设预算多少钱wordpress安装失败
  • iis的默认网站没有自动启动利用c 做网站
  • 手机制作网站的软件郑州春蕾网站建设
  • 北京做网站企业管理咨询公司取名
  • 惠州开发做商城网站建设哪家好手机网站底部广告代码
  • 涿州住房和城乡建设局网站肇庆高端模板建站
  • 网站搭建博客wordpress怎么写代码
  • 常见的网站建设类型都有哪些网页的后缀名有那些
  • 网站建设的展望企业生产erp软件公司
  • 报班学网站开发价格php thml怎样做网站
  • 怎么给网站做404界面怎样汉化wordpress主题
  • 网站页面设计模板代码百度网盘首页
  • 酒店设计网站建设方案烟台 做网站的公司
  • 免费自助建站哪个好网站开发中职责
  • 新手学做网站用什么软件婚纱网站策划书
  • 古县网站建设网监大队让网站备案
  • 自己开个网站最好看免费观看高清大全西瓜
  • 做网站是怎么回事微信做爰视频网站
  • 网站建设投标书组成国内贸易平台
  • 网站后台分模块珠海网站建设案例
  • 网站顶部轮播怎么做的旅游网站建设策划