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

广州手机网站建设价格wap网站开发和自适应

广州手机网站建设价格,wap网站开发和自适应,济南网站建设 力推聚搜网络,福州市建设局内部网站概述 当我们编写软件时#xff0c;有时我们会遇到需要在不修改现有代码的情况下添加新功能的情况。这时#xff0c;我们可以使用装饰器模式。 装饰器模式是一种结构性设计模式#xff0c;它允许我们在不改变对象接口的情况下动态地向对象添加功能。装饰器模式通过创建一个…概述 当我们编写软件时有时我们会遇到需要在不修改现有代码的情况下添加新功能的情况。这时我们可以使用装饰器模式。 装饰器模式是一种结构性设计模式它允许我们在不改变对象接口的情况下动态地向对象添加功能。装饰器模式通过创建一个包装对象来实现这一目的。这个包装对象具有与原始对象相同的接口但可以通过添加或覆盖方法来扩展或修改其行为。 装饰器模式通常用于以下情况 在运行时动态地向对象添加新功能而不会影响其他对象。在不改变现有代码的情况下添加新功能。以层次结构方式组合对象以获得更大的灵活性。 代码示例 下面是一个使用Java实现的装饰器模式的示例以模拟咖啡店销售咖啡的过程。 首先我们定义一个接口 Coffee表示咖啡的基本特性包括名称和价格 public interface Coffee {String getDescription();double getCost(); }然后我们定义一个具体的咖啡类 SimpleCoffee它实现了 Coffee 接口 public class SimpleCoffee implements Coffee {Overridepublic String getDescription() {return Simple coffee;}Overridepublic double getCost() {return 1.0;} }这个类表示最简单的咖啡没有任何装饰。 接下来我们定义一个装饰器类 CoffeeDecorator它也实现了 Coffee 接口但是它包含一个 Coffee 类型的成员变量 decoratedCoffee public abstract class CoffeeDecorator implements Coffee {protected Coffee decoratedCoffee;public CoffeeDecorator(Coffee decoratedCoffee) {this.decoratedCoffee decoratedCoffee;}Overridepublic String getDescription() {return decoratedCoffee.getDescription();}Overridepublic double getCost() {return decoratedCoffee.getCost();} }这个类的作用是让子类可以方便地覆盖 getDescription() 和 getCost() 方法以添加额外的装饰。 接下来我们定义两个具体的装饰器类Milk 和 Whip它们分别添加牛奶和奶泡 public class Milk extends CoffeeDecorator {public Milk(Coffee decoratedCoffee) {super(decoratedCoffee);}Overridepublic String getDescription() {return decoratedCoffee.getDescription() , Milk;}Overridepublic double getCost() {return decoratedCoffee.getCost() 0.5;} }public class Whip extends CoffeeDecorator {public Whip(Coffee decoratedCoffee) {super(decoratedCoffee);}Overridepublic String getDescription() {return decoratedCoffee.getDescription() , Whip;}Overridepublic double getCost() {return decoratedCoffee.getCost() 0.7;} }这些类都是 CoffeeDecorator 的子类它们实现了自己的 getDescription() 和 getCost() 方法来添加额外的功能。 最后我们可以使用这些类来创建不同类型的咖啡例如 Coffee simpleCoffee new SimpleCoffee(); System.out.println(simpleCoffee.getDescription() $ simpleCoffee.getCost());Coffee coffeeWithMilk new Milk(new SimpleCoffee()); System.out.println(coffeeWithMilk.getDescription() $ coffeeWithMilk.getCost());Coffee coffeeWithMilkAndWhip new Whip(new Milk(new SimpleCoffee())); System.out.println(coffeeWithMilkAndWhip.getDescription() $ coffeeWithMilkAndWhip.getCost());JDK中的应用 在 Java IO 库中许多类都使用了装饰器模式来提供更高级的功能。这些类都是在基本的输入和输出类之上建立的通过使用不同的装饰器来组合它们从而实现了各种不同的功能。 例如BufferedReader 和 BufferedWriter 类就是基于装饰器模式实现的。BufferedReader 类是 Reader 类的一个装饰器它提供了缓冲输入的功能。当我们需要从一个输入流中读取数据时BufferedReader 将输入流中的数据读取到缓冲区中然后逐个字符地返回它们。这样做的好处是可以减少系统调用从而提高效率。 以下是一个使用 BufferedReader 类的示例 FileReader fileReader new FileReader(file.txt); BufferedReader bufferedReader new BufferedReader(fileReader);String line; while ((line bufferedReader.readLine()) ! null) {System.out.println(line); }bufferedReader.close(); fileReader.close();在这个例子中我们首先创建了一个 FileReader 对象来读取文件然后将其传递给 BufferedReader 的构造函数。BufferedReader 对象使用 FileReader 对象作为其输入源并提供了缓冲输入的功能。在 while 循环中我们使用 readLine() 方法逐行读取文件并打印每一行。 类似的BufferedWriter 类也是 Writer 类的一个装饰器它提供了缓冲输出的功能。当我们需要将数据写入到一个输出流中时BufferedWriter 将数据写入到缓冲区中直到缓冲区满或者我们调用 flush() 方法时才将缓冲区中的数据写入到输出流中。 以下是一个使用 BufferedWriter 类的示例 FileWriter fileWriter new FileWriter(file.txt); BufferedWriter bufferedWriter new BufferedWriter(fileWriter);bufferedWriter.write(Hello, world!); bufferedWriter.newLine(); bufferedWriter.write(How are you?);bufferedWriter.close(); fileWriter.close();在这个例子中我们首先创建了一个 FileWriter 对象来写入文件然后将其传递给 BufferedWriter 的构造函数。BufferedWriter 对象使用 FileWriter 对象作为其输出目标并提供了缓冲输出的功能。我们使用 write() 方法将字符串写入到缓冲区中并使用 newLine() 方法添加一个新行。在最后我们调用 close() 方法来关闭 BufferedWriter 和 FileWriter 对象。 通过使用装饰器模式Java IO 库中的类可以轻松地组合成各种不同的输入和输出组合以提供更高级的功能。 类图 当使用装饰器模式时通常需要定义以下四种角色 抽象组件Component定义了被装饰对象的基本接口。可以是一个抽象类或者接口。在 Java 中它通常是一个接口。 具体组件Concrete Component实现了抽象组件接口的具体对象也是被装饰的对象。 抽象装饰器Decorator维持一个指向抽象组件对象的引用并定义了与抽象组件接口一致的接口。 具体装饰器Concrete Decorator向装饰对象添加额外的职责或行为。 其中Component 定义了被装饰对象的基本接口。ConcreteComponent 实现了 Component 接口也就是被装饰的对象。Decorator 是一个抽象类它维持一个指向 Component 对象的引用并定义了与 Component 接口一致的接口。ConcreteDecoratorA 和 ConcreteDecoratorB 分别是具体的装饰器类它们继承自 Decorator 类并向被装饰对象添加额外的职责或行为。 通过组合不同的具体组件和具体装饰器可以创建出许多不同的对象从而提供了灵活而且可扩展的设计。
http://www.hkea.cn/news/14564754/

相关文章:

  • 设计网站首页多少钱市场营销四大分析方法
  • 学校网站首页设计图片开个网站需要什么条件
  • 济宁贵网站建设网站总体规划说明
  • 网站建设套餐自助报价品牌策划方案
  • 民和县wap网站建设公司系统官网网站模板下载地址
  • 长春专业做网站的公司建立企业网站的缺点
  • 建个企业网站有什么用wordpress转域名收费吗
  • 课程网站开发流程图及原型图外贸那些网站好用
  • 有没有学做零食的网站百度怎么发布网站
  • 怎么选择顺德网站建设100m的网站 数据库
  • 网站目录管理模板下载wampserver wordpress
  • wdcp网站建设做网站的接私活犯法吗
  • 北京两学一做网站ie10网站后台无法编辑
  • 比较好看的网站北京建设教育协会官网
  • 官方网站建设的公司如何用自己的电脑做网站
  • thinkphp网站优化云客网平台
  • 酒托做哪个网站好做网站特别简单的软件
  • 外贸公司英文网站怎么做网站权重排名
  • 做导航网站用什么cms深圳网页设计培训视频
  • 常州做网站的公司有哪些建网络商城网站吗
  • 公司企业如何做网站万网是干什么用的
  • 沈阳网站建设服务电话重庆妇科医院排名
  • 网页网站设计公司wordpress可以装多少会员数据库
  • 个人网站建设方案书框架栏目建立自己的网站平台的好处
  • 湖北联兴建设有限公司网站民宿网络营销方式
  • 北京网站页设计制作wordpress 暂时关闭
  • 厂家高端网站设计地址钢筋网片厂家电话
  • 台州seo网站管理企业融资计划书
  • 常州市建设局网站高端网站设计企业
  • c 网站做微信支付功能作风建设简报--门户网站