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

百度竞价网站源码ui设计风格

百度竞价网站源码,ui设计风格,图片自动导入wordpress,软件开发就业前景走向装饰模式的定义#xff1a; 装饰模式#xff08;Decorator Pattern#xff09;是一种结构型设计模式#xff0c;它允许你动态地给一个对象添加一些额外的职责。就增加功能来说#xff0c;装饰模式相比生成子类更为灵活。 何时应用装饰模式#xff1f; 1.当需要动态地给…装饰模式的定义 装饰模式Decorator Pattern是一种结构型设计模式它允许你动态地给一个对象添加一些额外的职责。就增加功能来说装饰模式相比生成子类更为灵活。 何时应用装饰模式 1.当需要动态地给一个对象增加功能时如果你需要在运行时给一个对象增加新的职责而不是在编译时那么装饰模式是一个好的选择。 2.当使用继承会导致大量子类时如果你使用继承来扩展对象的功能那么可能会产生大量的子类导致系统难以管理和维护。使用装饰模式可以避免这个问题。 3.当需要透明地增强对象的功能时装饰模式允许你透明地增强对象的功能这意味着客户端代码可以像使用原始对象一样使用装饰后的对象而不需要知道对象已经被装饰了。 需要注意什么 避免过度使用虽然装饰模式很灵活但过度使用它可能会导致代码变得复杂和难以理解。因此在决定是否使用装饰模式时需要权衡其优点和缺点。 性能考虑由于装饰模式会在运行时动态地添加功能因此可能会带来一些性能开销。如果性能是一个关键问题那么需要仔细考虑是否使用装饰模式。 设计好接口装饰模式依赖于良好的接口设计。如果接口设计得不好那么装饰模式可能会变得难以使用和维护。 重要的构造部分 组件Component这是一个接口或抽象类它定义了对象的核心职责。 具体组件ConcreteComponent这是实现了组件接口的具体类。 装饰器Decorator这也是一个接口或抽象类它实现了组件接口并持有一个对组件对象的引用。装饰器接口通常会增加一些新的方法或覆盖组件接口中的方法以提供额外的功能。 具体装饰器ConcreteDecorator这是实现了装饰器接口的具体类。具体装饰器会持有对组件对象的引用并在需要时调用组件对象的方法。同时具体装饰器还可以添加自己的功能。 客户端Client客户端代码通过组件接口与对象交互而不需要知道对象是否被装饰了。 示例实现 以下是一个简单的装饰模式示例它模拟了一个咖啡订单系统。在这个系统中可以为咖啡添加不同的调料如牛奶和糖这些调料就是装饰器。 首先定义一个Beverage接口它代表了一种饮料 public interface Beverage { String getDescription(); double cost(); } 接着创建一个实现了Beverage接口的DarkRoast类它代表了一种深焙咖啡 public class DarkRoast implements Beverage { Override public String getDescription() { return Dark Roast Coffee; } Override public double cost() { return 1.99; } } 现在创建一个CondimentDecorator抽象类它实现了Beverage接口并持有一个Beverage对象的引用。这个类将作为所有装饰器的基类 public abstract class CondimentDecorator implements Beverage { protected Beverage beverage; public CondimentDecorator(Beverage beverage) { this.beverage beverage; } Override public String getDescription() { return beverage.getDescription(); } Override public double cost() { return beverage.cost(); } } 接下来创建两个具体的装饰器类Milk和Sugar它们分别表示加牛奶和加糖的调料 //milk类 public class Milk extends CondimentDecorator { public Milk(Beverage beverage) { super(beverage); } Override public String getDescription() { return beverage.getDescription() , Milk; } Override public double cost() { return beverage.cost() 0.20; // 假设加牛奶要额外收费0.2美元 } } //suger类 public class Sugar extends CondimentDecorator { public Sugar(Beverage beverage) { super(beverage); } Override public String getDescription() { return beverage.getDescription() , Sugar; } Override public double cost() { return beverage.cost() 0.10; // 假设加糖要额外收费0.1美元 } } 最后创建一个客户端类来演示如何使用装饰模式 public class CoffeeShop { public static void main(String[] args) { Beverage beverage new DarkRoast(); System.out.println(beverage.getDescription() $ beverage.cost()); Beverage beverageWithMilk new Milk(new DarkRoast()); System.out.println(beverageWithMilk.getDescription() $ beverageWithMilk.cost()); Beverage beverageWithSugarAndMilk new Milk(new Sugar(new DarkRoast())); System.out.println(beverageWithSugarAndMilk.getDescription() $ beverageWithSugarAndMilk.cost()); } } 最后运行代码会显示 Dark Roast Coffee $1.99 Dark Roast Coffee, Milk $2.19 Dark Roast Coffee, Sugar, Milk $2.29
http://www.w-s-a.com/news/974602/

相关文章:

  • 公众平台网站价格哪个网站做餐饮推广最好
  • 深圳 公司网站设计重庆的网站设计公司价格
  • 网站开发市场分析餐饮平台app有哪些
  • 制作一个收费网站要多少钱开发网站需要什么技术
  • 网站流量统计平台二手域名做网站不收录
  • 蒙古网站后缀mysql8.0 wordpress
  • 免费建立一个网站互联网推广培训
  • WordPress多站点绑定域名深圳住房建设部官方网站
  • 网站建设公司zgkr上海网页网络技术有限公司
  • wordpress附件扩展格式徐州seo关键词
  • wordpress博客站模板织梦网站 联系方式修改
  • 北京城乡建设厅网站重庆网站建设解决方案
  • 网站建设和维护工作内容网站的空间与域名
  • 济南做门户网站开发公司网页发布的步骤
  • 江苏省交通厅门户网站建设管理办法做的网站怎么让百度收录
  • 关于怎么做网站网站site的收录数量要多远索引量
  • 传世网站建设阳光创信-网站建设首选品牌
  • 周口建设网站中国装修公司十大排名
  • wordpress自助发卡青浦网站优化
  • 南京建设银行公积金查询网站wordpress加载插件下载
  • 做网站怎么那么难网站的建设与管理的心得体会
  • 黄冈网站建设哪家快些网站规划与建设评分标准
  • 建站平台 绑定域名怎么在手机上做网站
  • 做电影网站违法吗莱芜 网站
  • 品牌咨询公司泉州seo不到首页不扣费
  • 做网站做一个什么主题的怎样搭建一个企业网站
  • 做设计的有什么网站桂林论坛网站有哪些
  • 做的网站不能放视频开发公司春联
  • 重庆装修房子可以提取公积金吗长沙优化官网公司
  • 做外贸的网站都有哪些带后台的html网站源码