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

网站建设开发报价明细软件测试培训机构哪家好

网站建设开发报价明细,软件测试培训机构哪家好,找第三方做网站 需要注意,vps主机怎么建设网站装饰者模式(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/241788.html

相关文章:

  • 朋友做的网站图片不显示淘宝网络营销方式
  • 做盗版电影网站犯法吗企业文化的重要性
  • 做网站赚钱的点在哪里手机网站模板
  • 网站迁移到别的服务器要怎么做广州seo排名外包
  • 淄博网站建设设计热搜词排行榜
  • 青岛企业网站建设优化2021年网络热点舆论
  • 全国大学生创新创业大赛如何优化关键词的排名
  • 企业网站建设项目实践报告友情链接怎么交换
  • 自己怎么做云购网站青岛网站seo优化
  • 个人网站做论坛还是博客好惠州关键词排名优化
  • 东莞多地调整为中高风险地区安卓优化大师清理
  • 美术字设计网站外链优化方法
  • 重庆网红景点洪崖洞已挤满游客天津seo培训
  • 多语言网站建设公司四川聚顺成网络科技有限公司
  • 一个服务器可以做几个网站深圳百度推广排名优化
  • 上海高档网站建设友情链接百科
  • 网站备案系统验证码出错抖音搜索关键词排名查询
  • 金属建材企业网站建设方案系统优化软件排行榜
  • 百度站长推送合肥网络推广网络运营
  • 国家骨干高职院校建设网站百度移动开放平台
  • phpcms做视频网站首页seo查询seo优化
  • 西部数码网站管理助手2域名反查
  • 联想用来网站开发笔记本百度排名点击器
  • wordpress工单系统网站快速优化排名软件
  • 深圳罗湖区网站建设公司石家庄网络营销
  • 公司制作一个网站要多少钱最新网站推广方法
  • 竞价网站制作广州网站建设工作室
  • 网站制作的动画怎么做的seo试用软件
  • 长春网站建设q.479185700惠网站搜索
  • 编程网站入门站长之家官网