装饰模式的一个dome

完成装饰模式的demo,要求:按照自己的理解完成,有注释.

java实现代码如下:

详细见:https://gitee.com/AlphF/homework

1.整体结构

2.运行结果:1744D6E16AA344B89482A29CE959CC19uploading.4e448015.gif转存失败重新上传取消

3.部分重点类代码展示

  • 3.1 测试类:Decorator
package homewordTao;
import homewordTao.coffee.MeiShi;
import homewordTao.coffee.Moka;
import homewordTao.coffee.Zuoliao.Mocha;
import homewordTao.coffee.Zuoliao.XiangCao;
import homewordTao.coffee.abstract1.Coffee;
 
/**
 * @author jiangfeng 2018/7/25 16:36
 */
public class Decorator {
   /**
    * 公司楼下的咖啡吧出售有各种咖啡, 咖啡中可以加不同的配料–摩卡、牛奶、糖、奶泡;或者风味咖啡加香草和抹茶.
    *
    *  咖啡种类小知识
    * [浓缩咖啡]  咖啡鼻祖,是一种具有强烈口感的咖啡类型,发明及发展于意大利. 咖啡的风味浓缩后,口感尤为强烈.浓缩咖啡常作为其他风味调制咖啡的基础,如摩卡,拿铁,玛奇朵等
    * [美式咖啡]  就是加了水的意式浓缩
    * [卡布奇诺] 是三分之一浓缩咖啡,三分之一蒸汽牛奶和三分之一泡沫牛奶,卡布奇诺是一种泡沫咖啡.
    * [马琪雅朵] 在浓缩中加上两大勺绵密的奶泡就做好了一杯马琪雅朵.
    * [拿铁咖啡] 是由一小杯浓缩和一杯牛奶制作而成,比卡布奇诺多了鲜奶味道,味道也更香醇。
    * [摩卡咖啡] 摩卡通常是由三分之一的意式浓缩和三分之二的奶泡配成,再加入少许巧克力,通常会以巧克力糖浆加入)因为有巧克力和牛奶的关系,摩卡的味道稍甜
    * [白咖啡]   白咖啡采用特级脱脂奶精原料将咖啡的苦酸和咖啡因含量降到最低,不伤胃,口感丝滑,香浓,不带一丝苦涩。
    */
   public static void main(String[] args) {
      // 1. 美式加抹茶
   Coffee coffee = new MeiShi();
      System.out.println(coffee.getDesc()+" 价格:"+coffee.price());
      coffee = new Mocha(coffee);
 
      System.out.println(coffee.getDesc()+" 价格:"+coffee.price());
 
      // 2.摩卡加抹茶加香草
   Coffee coffee2 = new Moka();
      System.out.println(coffee2.getDesc()+" 价格:"+coffee2.price());
      coffee2 = new Mocha(coffee2);
      coffee2 = new XiangCao(coffee2);
      System.out.println(coffee2.getDesc()+" 价格:"+coffee2.price());
   }
}
  • 3.2 抽象父类: Coffee
package homewordTao.coffee.abstract1;
 
/**
 * @author jiangfeng 2018/7/25 17:41
 * 父类咖啡
 */
public abstract class Coffee {
   public String desc = "我是咖啡鼻祖:意式浓缩咖啡!";
 
   public String getDesc() {
      return desc;
   }
   public abstract double price();
 
}
  • 3.3 子类:美式咖啡
package homewordTao.coffee;
 
import homewordTao.coffee.abstract1.Coffee;
 
/**
 * @author jiangfeng 2018/7/25 18:10
 * 子类美式咖啡,继承抽象父类咖啡
 */
public class MeiShi  extends Coffee {
   public MeiShi() {
      desc = "美式";
   }
 
   @Override
   public double price() {
      return 20.00d;
   }
}
 
  • 3.4 子类:香草
package homewordTao.coffee.Zuoliao;
 
import homewordTao.coffee.abstract1.Coffee;
import homewordTao.coffee.abstract1.Zuoliao;
 
/**
 * @author jiangfeng 2018/7/25 18:28
 * 子类香草,继承抽象父类佐料
 */
public class XiangCao extends Zuoliao {
   private Coffee coffee;
   public XiangCao(Coffee coffee){
      this.coffee = coffee;
   }
 
   @Override
   public String getDesc() {
      return coffee.getDesc() + ", 加香草";
   }
 
   @Override
   public double price() {
      return coffee.price() + 6;
   }
}

 

 

4.装饰器模式和代理模式的区别

装饰器模式是使用的调用者从外部传入的被装饰对象(coffee),调用者只想要你把他给你的对象装饰(加强)一下。而代理模式使用的是代理对象在自己的构造方法里面new的一个被代理的对象,不是调用者传入的。调用者不知道你找了其他人,他也不关心这些事,只要你把事情做对了即可

 

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值