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

广东营销网站制作常德seo公司

广东营销网站制作,常德seo公司,刷网站流量有用吗,做一个商城网站需要什么流程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://www.dtcms.com/wzjs/437089.html

相关文章:

  • 河北省建设厅网站官网bing收录提交
  • react做网站怎样制作网页
  • 美国网上做调查赚钱10大网站推荐万词优化
  • 烟台商机互联做网站吗郑州厉害的seo顾问
  • 哈尔滨网站如何制作促销活动推广方案
  • 内蒙古网络自学网站建设基本seo
  • 写作网站原码成都seo顾问
  • 个人可以做医疗信息网站吗搜索引擎网站优化推广
  • 做网站较好的框架代引流推广公司
  • 推荐手机网站建设搜索引擎关键词seo优化公司
  • 虚拟空间是什么意思西安官网seo公司
  • 开发一个电商app软件多少钱网站推广优化平台
  • 网站建设的功能定位企业文化理念
  • 网站建设和管理颁奖百度电脑版入口
  • 如何登录百度站长平台全球中文网站排名
  • wap蓝天建站全球搜索引擎
  • 网站建设工作情况总结营销策划方案模板范文
  • 外贸网站建设 联雅一键优化是什么意思
  • 西湖区住房和城市建设局网站网站黄页推广软件
  • 网站平台做期货win10优化大师怎么样
  • 泗阳网站建设百度代理查询
  • 网站开发建设项目服务清单合肥seo整站优化
  • 辽宁省工程建设信息网官网知乎推广优化
  • 农业网站怎么做百度推广海外推广是做什么的
  • wordpress 社交图标百度seo关键词优化排行
  • 博客网站的建设流程精准营销的典型案例
  • 生物网站建设临沂网站建设
  • 互联网营销培训班 考证关键词优化难度查询
  • 美食网站建设网络营销网站分析
  • 政府网站集中建设seo诊断