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

黄山网站建设找哪家中国建设银行黄陂支行网站

黄山网站建设找哪家,中国建设银行黄陂支行网站,it外包公司是做什么的,网站建设-应酷装饰者模式(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/wzjs/615578.html

相关文章:

  • 有没有做外贸的网站啊网站模板建网站
  • ppt免费下载模板网站wordpress新网站
  • 网站制作建设需求h5网站
  • 广东建立网站网络推广app是干什么的
  • 2017网站开发兼职网站域名301设置
  • 南宁专业网站建设公司郑州网站建设推广有限公司
  • 建网站选域名手机端视频网站模板下载
  • node做网站后台网站推广的看法
  • 南昌网站建设是什么怎么免费建立一个网站
  • 平面设计师上的网站给个网站你们知道的
  • 江苏省建设通官方网站腾讯免费网站空间
  • 兰州做网站一咨询兰州做网站公司常用网站开发工具
  • 做创意美食的视频网站有哪些seo排名优化软件有用吗
  • 网站做过备案后能改别的公司吗做网站很难吗
  • 购物商城网站建设公司大学生简历免费制作网站
  • 报名工具小程序官网永康好口碑关键词优化
  • 网站建设系统分析网站广告js代码添加
  • 小型网站制作江浙区域网络公司排名
  • 石岩附近做网站公司网站上传 文件夹结构
  • 建设银行手机网站局域网建设网站视频教程
  • 网站建设标签网站用户 分析
  • 网站后台字体安装wordpress 插件 汉化
  • 做二手房需要用到哪些网站搜集房源网站推广方法
  • 石家庄制作网站的公司简介网站建设需要注意哪些事项
  • 自己做网站 需要哪些wordpress 插件放在那
  • 买域名之后怎样做网站网站怎么认证
  • 小程序在哪个网站做邯郸城乡建设部网站首页
  • 怎么申请免费企业网站app开发公司一个月可以赚多少钱
  • 开发网站代码量软件设计师中级考什么
  • 小型企业网站系统泰安网络营销公司