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

网站百度梧州论坛

网站百度,梧州论坛,wordpress首页文章数,福建手工外发加工网目录 适配器模式 简介 角色 使用 优缺点 使用场景 装饰器模式 简介 优缺点 模式结构 使用 使用场景 适配器模式 简介 允许将不兼容的对象包装成一个适配器类#xff0c;使得其他类可以通过适配器类与原始对象进行交互#xff0c;从而提高兼容性 角色 目标角色…目录 适配器模式 简介 角色 使用 优缺点 使用场景 装饰器模式 简介 优缺点 模式结构 使用 使用场景 适配器模式 简介 允许将不兼容的对象包装成一个适配器类使得其他类可以通过适配器类与原始对象进行交互从而提高兼容性 角色 目标角色该角色定义把其他类转换为何种接口也就是我们的期望接口 源角色你想把谁转换成目标角色这个“谁”就是源角色它是已经存在的、运行良好的类或对象 适配器角色适配器模式的核心角色其他两个角色都是已经存在的角色而适配器角色是需要新建立的它的职责非常简单通过继承或是类关联的方式把源角色转换为目标角色 使用 1.定义目标接口创建一个目标接口这个接口定义了客户端所期望的功能。 2.创建原始类客户端原始功能 3.创建适配器类创建一个适配器类该类实现了目标接口同时包装了不兼容的原始对象使得客户端可以通过目标接口与原始对象进行交互 4.使用目标接口客户端代码使用目标接口与适配器进行交互 // 目标接口 interface Target { void request(); } // 原始类 class Adaptee { void specificRequest() { System.out.println(Adaptees specific request.); } } // 适配器类 class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee adaptee; } Override public void request() { adaptee.specificRequest(); } } // 客户端代码 public class Client { public static void main(String[] args) { Adaptee adaptee new Adaptee(); Target target new Adapter(adaptee); target.request(); } } 目标接口Target它定义了一个request方法。我们还有一个原始类Adaptee它有一个名为specificRequest的方法。我们的适配器类Adapter实现了目标接口并且包装了原始类的specificRequest方法。在客户端代码中我们创建了一个原始类的实例和一个适配器类的实例然后将适配器类的实例传递给目标接口的引用。当我们调用目标接口的request方法时实际上是适配器类在调用原始类的specificRequest方法 优缺点 优点 1.能提高类的透明性和复用现有的类复用但不需要改变。 2.目标类和适配器类解耦提高程序的扩展性。 3.在很多业务场景中符合开闭原则 缺点 1.适配器编写过程需要全面考虑可能会增加系统的复杂性 2.增加代码阅读难度降低代码可读性过多使用适配器会使系统代码变得凌乱 使用场景 1.一个类的接口转换成期望的另一个接口使不能兼容的两个类一起工作 2.想要创建一个可以复用的类该类可以与其他不相关的类或不可预见的类协同工作 3.在软件维护期间由于不同产品或不同厂家造成功能类似而接口不相同的情况可以通过适配器模式来解决 使用适配器模式可以降低不同组件之间的耦合度提高系统的可扩展性和可维护性。同时适配器模式还可以解决不同系统之间的接口不兼容问题 装饰器模式 简介 在不改变现有对象结构下动态的给对象添加一些功能 优缺点 优点 1.装饰器是继承的有力补充比继承灵活在不改变原有对象的情况下动态的给一个对象扩展功能即插即用 2.通过使用不用装饰类及这些装饰类的排列组合可以实现不同效果 3.装饰器模式完全遵守开闭原则 缺点 装饰器模式会增加许多子类过度使用会增加程序得复杂性 模式结构 角色 抽象构件角色定义一个抽象接口以规范准备接收附加责任的对象 具体构件角色实现抽象构件通过装饰角色为其添加一些职责 抽象装饰角色继承抽象构件并包含具体构件的实例可以通过其子类扩展具体构件的功能 具体装饰角色实现抽象装饰的相关方法并给具体构件对象添加附加的责任 结构图 使用 1.创建接口 public interface Shape { double getArea(); } 2.接口具体实现类 public class Rectangle implements Shape { private double length; private double width; public Rectangle(double length, double width) { this.length length; this.width width; } Override public double getArea() { return length * width; } } 3.创建抽象装饰器 public abstract class ShapeDecorator implements Shape { protected Shape decoratedShape; public ShapeDecorator(Shape shape) { this.decoratedShape shape; } Override public double getArea() { return decoratedShape.getArea(); } } 4.创建具体装饰器 public class RectangleWithBorder extends ShapeDecorator { private double borderWidth; public RectangleWithBorder(Shape shape, double borderWidth) { super(shape); this.borderWidth borderWidth; } Override public double getArea() { return decoratedShape.getArea() borderWidth * decoratedShape.getArea(); } } 5.使用 public class Main { public static void main(String[] args) { Shape rectangle new Rectangle(5, 5); Shape rectangleWithBorder new RectangleWithBorder(rectangle, 1); // 给矩形添加边框宽度为1的装饰器 System.out.println(Rectangle area: rectangle.getArea()); // 输出Rectangle area: 25.0 System.out.println(Rectangle with border area: rectangleWithBorder.getArea()); // 输出Rectangle with border area: 27.0 } } 使用场景 1.扩展功能当您想要扩展一个类的功能时可以使用装饰器模式来添加新的责任而不需要修改原有类的代码。这使得代码更加灵活易于维护 2.动态变化如果需要在运行时根据需要动态地改变对象的行为可以使用装饰器模式 3.统一接口如果有一组具有相似功能但是又不完全相同的类可以使用装饰器模式来统一它们的接口使得在使用它们时不需要关心具体的类 4.延迟加载如果某些数据是可选的可以在需要时才加载使用装饰器模式可以实现延迟加载的功能 5.处理复杂对象当涉及到复杂的对象结构时装饰器模式可以简化代码。通过将不同的行为封装到不同的装饰器中可以组合这些装饰器来创建具有不同行为的对象 装饰器模式适用于在不修改原有代码的基础上动态地给对象添加新的行为。它适用于需要在运行时动态地改变对象行为或者需要统一接口的场景。
http://www.hkea.cn/news/14566320/

相关文章:

  • app的后台和网站的后台差别中文网站建设技术
  • 做视频网站多少钱照片制作视频软件
  • 网站图怎么做会高清图片大连建设
  • 专门做眼镜的网站建网站报价表
  • 网上怎样做电缆网站wordpress禁用头像
  • 东莞建设网站制作青海网站制作
  • 鄂尔多斯网站推广建设工程项目管理信息门户网站
  • 苏州企业做网站wordpress从入门
  • 主流网站模板wordpress 3.8页面伪静态化 html
  • 黄金网站app在线观看下载10淘宝开网站建设店铺分析
  • 青岛网站建设服务公司wordpress新站注意事项
  • 公众号怎么建网站网站首页添加浮动飘窗
  • 网站积分系统下载浙江平安建设信息系统网站
  • 做网站的公司怎么做抖音账号鲜花购物网站源码
  • 旅游网站制作百度云vi设计公司山猫
  • 公司app与网站建设方案免费网站从哪里申请
  • 唐山网站建设唐山做网站外贸网站建设入门
  • 智慧团建网站密码忘了电脑网站历史记录怎么查看
  • 购物网站建设策划报告推广型网站开发软件
  • 自己建网站的详细步骤wordpress主机cdn
  • 中国外贸网站网络工程师证书考试时间
  • 服务态度 专业的网站建设网站二级栏目数量
  • 个人网站 flashseo搜索优化费用
  • 网站推广的途径和方法开发者模式开着好不好
  • 天宁寺网站建设免费seo公司
  • 网站运营与数据分析深圳公司官网设计
  • 网站设计 英文html网站怎么搭建
  • 欧美男女直接做的视频网站网站开发公司的销售方式
  • 郑州网站建设最好广告学是热门还是冷门
  • 资讯型电商网站优缺点长沙一站式网站建设