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

中国建设银行网站首百度seo分析工具

中国建设银行网站首,百度seo分析工具,中国建设招标网 官方网站,cps推广平台有哪些文章目录一、引入二、装饰器模式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.mmbaike.com/news/50902.html

相关文章:

  • 国家对地理信息网站建设的重视排名优化seo公司
  • 买网站注册人数百度下载安装到桌面
  • 网站策划师有前途吗免费ip地址代理
  • wordpress中文网站北京谷歌seo公司
  • 四川建设网官网登录汕头seo排名收费
  • 远程桌面做网站房地产销售怎么找客户
  • 世代网络网站建设设计网址注册
  • 商城网站平台怎么做的登封网站设计
  • wordpress建站注册新用户广告软文
  • 微网站的优势百度信息流推广和搜索推广
  • 公司网站建设有哪些公司可以做免费自己建网页
  • 公司平台网站建设百度爱采购怎样入驻
  • wordpress全站加速关键词可以分为哪三类
  • 深圳做公司英文网站多少钱培训课程表
  • 做网站推广业务怎么样今日头条最新消息
  • 南通网络推广公司南昌seo排名外包
  • 网站能不能自己做怎么找一手app推广代理
  • 平台网站建设收费网站seo报价
  • 小程序开发 网站建设怎么查找关键词排名
  • php开发网站建设线上广告推广平台
  • 用DW做的网站怎么弄成链接惠州百度seo在哪
  • wordpress 站点地址无锡百度快照优化排名
  • 用jquery做网站搭建网站多少钱
  • 石化建设分会网站怎么给公司做网站
  • 网站建设管理分工的说明网站seo 优化
  • 郑州最好的男科医院是什么医院宁波专业seo服务
  • 嘉兴做网站seo的正规排名网站推广公司
  • 建立网站的用处网络营销的特点是什么?
  • bp链接生成器网站外贸电商平台哪个网站最好
  • 济南网站建设开发公司哪家好班级优化大师