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

加密网站扬州做网站的网络公司

加密网站,扬州做网站的网络公司,成立公司需要多少注册资金,自己做手机版网站制作装饰者模式(Decorator) 定义 1、动态的将新功能附加到对象上,在对象功能扩展方面,他比继承更有弹性,也体现了开闭原则(OCP) 2、这里提到的动态的将新功能附加到对象和OCP原则,在后面应用实际上会以代码的形式体现。 //饮料 // 饮…

装饰者模式(Decorator)

在这里插入图片描述

定义
1、动态的将新功能附加到对象上,在对象功能扩展方面,他比继承更有弹性,也体现了开闭原则(OCP)
2、这里提到的动态的将新功能附加到对象和OCP原则,在后面应用实际上会以代码的形式体现。

//=====================饮料========================
// 饮料
@Data
public abstract class Drink {//描述public  String description;//价格private float price=0.0f;//计算费用的抽象方法//子类去实现public abstract float cost();
}
public class Coffee extends Drink {@Overridepublic float cost() {return super.getPrice();}
}
public class EspressoCoffer extends Coffee {public EspressoCoffer() {setDescription("意大利咖啡");setPrice(6.0f);}
}
public class LongBlackCoffer extends Coffee {public LongBlackCoffer() {setDescription("美式咖啡");setPrice(5.0f);}
}
public class DecafCoffee extends Coffee {public DecafCoffee() {setDescription(" 无因咖啡 ");setPrice(1.0f);}
}
public class ShortBlackCoffer extends Coffee {public ShortBlackCoffer() {setDescription(" short Black coffer");setPrice(5.6f);}
}
//===================装饰者类==========================/*** 装饰者** @author Administrator* @description*/
public class Decorator extends Drink {private Drink obj;//组合public Decorator(Drink obj) {this.obj = obj;}@Overridepublic float cost() {//自己的价格 + drink的价格return super.getPrice() + obj.cost();}@Overridepublic String getDescription() {//输出了被装饰者的信息return super.description + "" + super.getPrice() + " && " + obj.getDescription();}
}
//巧克力
public class ChocolateDecorator extends Decorator {public ChocolateDecorator(Drink obj) {super(obj);setDescription(" 巧克力 ");//调味品的价格setPrice(3.0f);}
}
//牛奶调味品
public class MilkDecorator extends Decorator {public MilkDecorator(Drink obj) {super(obj);setDescription(" 牛奶 ");setPrice(2.0f);}
}
//豆浆
public class SoyDecorator extends Decorator {public SoyDecorator(Drink obj) {super(obj);setDescription(" 豆浆 ");setPrice(1.5f);}
}
//====================调用=============================
@Slf4j
public class CofferBarClient {public static void main(String[] args) {//装饰者模式下的订单:2份巧克力+一份牛奶的LongBlack//1、点一份LongBlackDrink order=new LongBlackCoffer();log.info("费用1:{}",order.cost());log.info("描述1:{}",order.getDescription());//order加一分牛奶order=new MilkDecorator(order);log.info("费用1:{}",order.cost());log.info("描述1:{}",order.getDescription());//order 加一分巧克力order=new ChocolateDecorator(order);log.info("费用1:{}",order.cost());log.info("描述1:{}",order.getDescription());//order 加一分巧克力order=new ChocolateDecorator(order);log.info("费用1:{}",order.cost());log.info("描述1:{}",order.getDescription());log.info("=======================================");Drink order2=new DecafCoffee();log.info("费用2:{}",order2.cost());log.info("描述2:{}",order2.getDescription());order2=new ChocolateDecorator(order2);log.info("费用2:加入一份巧克力{}",order2.cost());log.info("描述2:加入一份巧克力{}",order2.getDescription());}
}
  • 输出信息
描述1:美式咖啡
费用1:7.0
描述1: 牛奶 2.0 && 美式咖啡
费用1:10.0
描述1: 巧克力 3.0 &&  牛奶 2.0 && 美式咖啡
费用1:13.0
描述1: 巧克力 3.0 &&  巧克力 3.0 &&  牛奶 2.0 && 美式咖啡
=======================================
费用2:1.0
描述2: 无因咖啡 
费用2:加入一份巧克力4.0
描述2:加入一份巧克力 巧克力 3.0 &&  无因咖啡 

源码中的使用(InputStream)
在这里插入图片描述

public abstract class InputStream implements Closeable{}//是一个抽象类,即Component
public class FilterInputStream extends InputStream{//是一个装饰者类Decoratorprotected volatile InputStream in //被装饰的对象 }
class DataInputStream extends FilterInputStream implements DataInput{//FilterInputStream子类,
http://www.dtcms.com/a/509431.html

相关文章:

  • 网站备案 山东核验点网站建设论文开题报告
  • 方维网络的品牌网站建设wordpress删除主题数据
  • 美食网站设计目的尤溪网站建设
  • 建设部网站造价咨询工业设计软件上市公司
  • 外贸自建站的推广方式门户网站建设的平台
  • 呼和浩特网站建设哪家最便宜如何把wordpress头部去掉
  • 兰州网站订制网站建设与准备
  • 专业网站优化软件重庆承越网站建设公
  • 谷歌推广网站开发公司是否可以代建筑公司支付材料款
  • 上海本地网站建设小程序代码怎么获取
  • FTP 和 SFTP:作用、使用场景及详细使用教程
  • 东莞常平网站建设网站建设要做原型图吗
  • 重庆市建设工程信息网官网怎么查看seo业务培训
  • 长沙个人网站建设网站中医建设
  • 【图像理解进阶】如何用大模型实现手写汉字识别?Python实战教程
  • 淇县住房和城乡建设局网站怎样用手机做推广免费网站
  • 外贸网站建设不可缺少的灵活性超级优化空间
  • 企业网站的设计思路手机网站建设渠道
  • 荣欣建设集团有限公司网站广东东莞电子厂
  • 群晖做自己的电影网站织梦网站栏目建设
  • 嵌入式开发学习日志41——stm32之SPI总线基本结构
  • 哈尔滨网站建设公司oeminc信息爆炸的时代做网站
  • 网站建设的项目方案模板中国建设企业银行
  • 泉州自助建站软件免费域名注册方式
  • 商城网站哪个公司做的好处羽毛球赛事2022
  • 高邮城乡建设局 网站长春网站建设厂家
  • 浙江城乡建设网站证件查询张家港网站建设服务
  • 【Java工程师面试全攻略】Day14:大数据处理与实时计算深度解析
  • 网上做家教的网站您备案的网站名称没有关联性
  • 互联网科技公司做网站哪家好标题优化seo