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

建设网站的意义 作用是什么意思企业概况的模板范文

建设网站的意义 作用是什么意思,企业概况的模板范文,地图上如何添加自己公司的地址,搭建网站需要什么软件文章目录一、引入二、装饰器模式2.1 Intent 意图2.2 Applicability 适用性2.3 类图2.4 优缺点2.5 应用实例:Java IO 类2.6 应用实例:咖啡馆订购系统一、引入 咖啡馆订购系统 Initial 初始 4 种咖啡 House blend (混合咖啡)Dark Roast (深度烘培)Decaf (…

文章目录

      • 一、引入
      • 二、装饰器模式
        • 2.1 Intent 意图
        • 2.2 Applicability 适用性
        • 2.3 类图
        • 2.4 优缺点
        • 2.5 应用实例:Java IO 类
        • 2.6 应用实例:咖啡馆订购系统

一、引入

  • 咖啡馆订购系统

  • Initial 初始

    • 4 种咖啡
      • House blend (混合咖啡)
      • Dark Roast (深度烘培)
      • Decaf (低咖啡因咖啡)
      • Espresso (意式浓缩咖啡)
        在这里插入图片描述
        在这里插入图片描述
  • 需求变更:客户可以加料(咖啡、牛奶、糖等)

    • steamed milk
    • soy
    • mocha
    • Whip

使用继承:类爆炸 NO
在这里插入图片描述
修改父类:Beverage
在这里插入图片描述
需求倘若变更:料种类增加、料价格变化,需要修改 Beverage 类

Classes should be open for extension, but closed for modification:开放封闭原则,对修改封闭

No

在这里插入图片描述

Decorator…

二、装饰器模式

aka:Wrapper (包装器)

2.1 Intent 意图

  • Attach additional responsibilities to an object dynamically. 可动态地将其他职责附加到对象上.
  • Decorators provide a flexible alternative to subclassing for extending functionality. 装饰器为扩展功能提供了一种替代子类化的灵活替代方案.
    • Dynamically extension
    • Better than inheritance

2.2 Applicability 适用性

  • To add responsibilities to individual objects dynamically without affecting other object.
  • When extension by subclassing is impractical. 当子类化扩展是不切实际的.
    • 如,子类数量爆炸

2.3 类图

在这里插入图片描述

  • Component: defines the interface for objects that can have responsibilities added to them dynamically. 为可以动态地添加职责的对象定义接口
  • ConcreteComponent: defines an object to which additional responsibilities can be attached. 定义一个可以附加其他责任的对象.
  • Decorator: maintains a reference to a Component object and defines an interface that conforms to Component’s interface. 维护对 Component 对象的引用,并定义一个符合 Component 接口的接口
  • ConcreteDecorator: adds responsibilities to the component. 向组件添加职责

2.4 优缺点

  • 优点
    • More flexibility than static inheritance. 比静态继承更灵活
      • With Decorators, responsibilities can be added and removed at runtime simply by attaching and detaching them.
    • 避免"类爆炸"
    • 通过排列和组合,可以创建许多行为组合
    • 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能
  • 缺点
    • Lots of little objects
    • A decorator and its component are not same
    • 多层装饰比较复杂

2.5 应用实例:Java IO 类

InputStream and OutputStream 字节流
Reader and Writer 字符流
在这里插入图片描述
FilterInputStream:protected volatile InputStream in;
在这里插入图片描述
FilterInputStream 与 InputStream 为组合和被组合关系

与装饰器设计模式类图相符!

在这里插入图片描述

public class JavaIO {public static void main(String[] args) throws FileNotFoundException {// Open an InputStream.FileInputStream in = new FileInputStream("test.dat");// Create a buffered InputStream.BufferedInputStream bin = new BufferedInputStream(in);// Create a buffered, data InputStream.DataInputStream dbin = new DataInputStream(bin);// Create an unbuffered, data InputStream.DataInputStream din = new DataInputStream(in);// Create a buffered, pushback, data InputStream.PushbackInputStream pbdbin = new PushbackInputStream(dbin);}
}

2.6 应用实例:咖啡馆订购系统

  • 饮品抽象类:Beverage
public abstract class Beverage {protected String description = "Unknown Beverage";public String getDescription() {return description;}public abstract double cost();
}
  • 咖啡类:继承 Beverage
public class DarkRoast extends Beverage {public DarkRoast() {description = "DarkRoast";}public double cost() {return .99;}
}
public class Espresso extends Beverage {public Espresso() {description = "Espresso";}public double cost() {return 1.99;}
}
public class HouseBlend extends Beverage {public HouseBlend() {description = "House Blend Coffee";}public double cost() {return .89;}
}
  • 装饰器:CondimentDecorator
public abstract class CondimentDecorator extends Beverage {public abstract String getDescription();
}
  • 装饰器子类:ConcreteDecorator
public class Mocha extends CondimentDecorator {Beverage beverage;public Mocha(Beverage beverage) {this.beverage = beverage;}public String getDescription() {return beverage.getDescription() + ", Mocha";}public double cost() {return .20 + beverage.cost();}
}
public class Soy extends CondimentDecorator {Beverage beverage;public Soy(Beverage beverage) {this.beverage = beverage;}public String getDescription() {return beverage.getDescription() + ", Soy";}public double cost() {return .15 + beverage.cost();}
}
public class Whip extends CondimentDecorator {Beverage beverage;public Whip(Beverage beverage) {this.beverage = beverage;}public String getDescription() {return beverage.getDescription() + ", Whip";}public double cost() {return .10 + beverage.cost();}
}
  • 使用与测试:
public class StarbuzzCoffee {public static void main(String[] args) {Beverage beverage = new Espresso();System.out.println(beverage.getDescription() + " $" + beverage.cost());Beverage beverage2 = new DarkRoast();beverage2 = new Mocha(beverage2);beverage2 = new Mocha(beverage2);beverage2 = new Whip(beverage2);System.out.println(beverage2.getDescription() + " $" + beverage2.cost());Beverage beverage3 = new HouseBlend();beverage3 = new Soy(beverage3);beverage3 = new Mocha(beverage3);beverage3 = new Whip(beverage3);System.out.println(beverage3.getDescription() + " $" + beverage3.cost());}
}

在这里插入图片描述

http://www.sczhlp.com/news/64821/

相关文章:

  • 网站网页设计html广告优化师工资一般多少
  • 电影网站如何做不侵权山东省水利建设市场信用信息平台网站
  • 服务器上的网站怎么做301wordpress会员支付系统
  • 鲜花网站的数据库建设什么网站可以做医疗设备的
  • 什么网站可以做兼职赚钱吗新余做网站的公司
  • 东莞seo建站网站开发和网络设计有什么区别
  • 网站空间服务商wordpress怎么搜站点
  • 抄袭网站模板wordpress 仿简书模板
  • 一流的镇江网站优化网校
  • 成都定制网站设网站建设及网页设计
  • 优化网站排名公司旅游网站平台建设的方案
  • 网上建设银行网站做平台网站要多久
  • 网站开发参考文献2016网站虚拟机可以自己做吗
  • 网站页面的滑动怎么做的怎么在悉尼做网站
  • 网站建设自学wordpress主题免费共享
  • 怎么登录住房城乡建设部网站鞍山58同城招聘网
  • vps网站如何设置缓存怎么看网站用什么代码做的
  • 网站建设时间规划表ps软件下载电脑版教程
  • 商城网站建设公司报价怎么做有数据库的网站
  • 网站界面设计和ios移动界面设计的区别wordpress 白色主题
  • Tita 项目软件运营:开启企业数字化高效运营新纪元
  • Index of /ubuntu-cdimage/releases/25.10/
  • 手把手教你安装与配置 Corona Renderer 13
  • 网站的访问量统计怎么做刚成立的公司怎样做自己网站
  • 怎么制作网站下载软件com域名注册
  • 怎么做网站效果图桂林做手机网站
  • 网站301跳转有坏处吗南宁市网站
  • 正则化
  • 网站之家查询高密网站制作
  • 宜宾市建设工程质量监督站网站东莞网站推广哪家好