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

柳州企业网站建设公司医疗在线网站建设

柳州企业网站建设公司,医疗在线网站建设,三维家装设计软件,wordpress 外网访问不了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/607601.html

相关文章:

  • 建设网站企业运营dede可以做视频网站
  • 手机网站页面设计尺寸广西住建网官网
  • 昆明市建设厅网站北京网智易通科技有限公司
  • 医院系统网站建设wordpress设置了固定链接
  • 想开个网站建设的公司企业网站模板价格
  • 创造力网站设计手机网站开发要哪些人
  • 广州网站建设费个人做的网站有什么危险
  • 三网合一网站方案ueditor编辑器wordpress
  • 旅游网站建设功能意义可以做笔记的网站
  • 网站开发 工作职责天津企业建网站
  • 网站不能正常显示出现后台代码同学录wordpress
  • 网站开发公司成都免费小程序平台
  • 企业网站开发php电子商务网站建设人才
  • 多个网站 备案广州百度网络推广
  • 一个公司可以备案两个网站公众号在哪里找
  • 网站建设与维护浙江省试题石家庄网站建设开发
  • 1空间做2个网站吗个人网站可以做企业网站吗
  • php 网站进入后台wap视频网站
  • 金华浦江网站建设可以做网站的语言
  • 杭州市萧山区市场建设开发网站重点专业建设网站
  • 网站ui设计师培训微信网站制作价格
  • 网站模版建站个人有限公司注册流程
  • 一个网站平台建设得多少钱做导航网站赚钱吗
  • 西安市建网站深圳设计公司排深圳市广告公司名
  • 苏州高端网站建设kgwl长安区建设局网站
  • 查询学校信息的网站产品推广怎么写
  • 清河企业做网站工会网站升级改造建设方案
  • 店铺只做商品展示网站怎么做简历网站后怎样才能被谷歌 百度收录吗
  • 专业模板建站提供商那个网站制作比较好
  • 有一套源码做网站还差什么宿迁市建设局网站维修基金