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

网站开发运营工作总结游戏开发物语下载

网站开发运营工作总结,游戏开发物语下载,wordpress占用内存,黄页号码标记申诉装饰者模式 设计模式的基本原则#xff0c;对内关闭修改。 Decorator Pattern#xff0c;装饰者模式#xff0c;也叫包装器模式(Wrapper Pattern)#xff1a;将一个对象包装起来#xff0c;增加新的行为和责任。一定是从外部传入#xff0c;并且可以没有顺序#xff0…装饰者模式 设计模式的基本原则对内关闭修改。 Decorator Pattern装饰者模式也叫包装器模式(Wrapper Pattern)将一个对象包装起来增加新的行为和责任。一定是从外部传入并且可以没有顺序按照代码的实际需求随意挑换顺序。当使用装饰器模式时通常将原始对象作为一个参数传给装饰者的构造器。注重功能拓展关注于在一个对象上动态的添加方法在同一个方法下实现更多的功能。装饰者能够在运行时递归地被构造。 类图 涉及角色 Component被装饰对象基类定义对象的接口可以给这些对象动态增加功能ConcreteComponent具体被装饰对象定义具体的对象Decorator可以给它增加额外的功能Decorator抽象装饰者类持有一个指向Component实例也就是具体被装饰对象的引用且定义与Component一致的接口ConcreteDecorator具体装饰者对象实现抽象装饰者角色负责为具体构件添加额外功能。 适用场景 在不影响其他对象的情况下以动态透明的方式给单个对象添加职责处理那些可以撤消的职责当不能采用生成子类的方法进行扩充时。一种情况是可能有大量独立的扩展为支持每一种组合将产生大量的子类使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏或类定义不能用于生成子类 OO原则动态地将责任附加到对象上。想要扩展功能装饰者提供有别于继承的另一种选择。原有的不能满足现有的需求对原有的进行增强。 装饰和继承 除了继承装饰者模式也可以扩展行为。实际上是因为继承的弊端大师们提出装饰者模式。 继承是面向对象编程中的一种机制一个类可以继承另一个类的属性和方法。被继承的类称为父类或基类继承的类称为子类或派生类。 优点 代码重用子类可重用父类的方法和属性简单明了继承关系一目了然易理解 缺点 耦合性高子类与父类紧密耦合修改父类可能会影响所有子类灵活性低继承是静态的不能在运行时改变违背单一职责原则子类往往会继承父类的所有功能可能导致类职责过多 总结 装饰者模式提供一种动态组合对象行为的方法灵活性更高遵循开闭和单一职责原则但会增加复杂性继承提供一种静态的代码重用机制简单明了但耦合性高灵活性低 选择哪种模式取决于具体需求如果需要动态扩展对象行为使用装饰者模式如果希望简单地重用代码使用继承。 实例 Java IO BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 当使用InputStream读取数据时每次可能都会进行实际的IO操作而BufferedInputStream会先将一部分数据读入缓冲区后续的读取操作可以直接从缓冲区获取减少IO次数。 BufferedInputStream并没有改变FileInputStream的基本结构和接口只是为其添加缓冲特性。 Spring Spring中的装饰者在类名上有两种表现 类名中含有Wrapper类名中含有Decorator TransactionAwareCacheDecorator实现Cache接口 外观模式 Facade外观模式的定义提供一个统一的高层接口用来访问子系统中的一批接口让子系统更容易使用。 当需要简化并统一一批接口时考虑使用外观模式依托于子系统执行。注重多个类的集成、统一适配。通过外观的封装使应用程序只能看到外观对象而不会看到具体的细节对象降低应用程序的复杂度提高可维护性。 该模式把一些复杂的流程封装成一个简单接口供外部用户使用涉及3个角色 门面角色外观模式的核心。它被客户角色调用它熟悉子系统的功能。内部根据客户角色的需求预定几种功能的组合。子系统角色实现子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互也可以由供外界调用的接口。客户角色通过调用Facede来完成要实现的功能。 优点 解耦合客户端和子系统解耦让子系统内部的模块功能更容易扩展和维护易用性客户端不需要知道子系统内部实现或构成只需要跟Facade类交互层次性有些方法是对系统外的有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到Facade类中这样就可以实现客户端的使用很好的隐藏子系统内部的细节。 满足的设计原则莫忒耳原则又称最少知识原则。 缺点局限性 对子系统的所有操作都交给Facade类来处理受到Facade类的约束比如Facade类里可能没有对某个子系统单独的操作如果需要则新增方法这样可能会导致更多的包装对象被制造出来以处理和其他组件的沟通可能会导致复杂度和开发时间的增加降低运行时性能。 实例 SLF4J参考Java日志框架SLF4J。 Spring MeterFacade用于APM系统中的Metric监控有3个子接口CounterFacade、TimerFacade、GaugeFacade Tomcat RequestFacadeRequest到HttpServletRequest封装 ResponseFacadeRequest到HttpServletResponse封装 StandardWrapperFacadeStandardWrapper到ServletConfig封装 ApplicationContextFacadeApplicationContext到ServletContext封装 适配器 Adapter适配器允许通常因为接口不兼容而不能在一起工作的类工作在一起做法是将类自己的接口包裹在一个已存在的类中。将一个对象包装起来改变接口注重接口兼容匹配新接口适配类持有新的目标对象。 适配器模式有三种形式 对象适配器通过组合满足用户期待接口还降低代码间的不良耦合。推荐使用适配器与适配者之间是关联关系 类适配器当客户在接口中定义期望的行为时就可以应用适配器模式提供一个实现该接口的类并且扩展已有的类通过创建子类来实现适配适配器与适配者之间是继承关系 缺省适配器模式Default Adapter Pattern又称为单接口适配器模式是类适配器模式的变体。当不需要实现一个接口所提供的所有方法时可先设计一个抽象类实现该接口并为接口中每个方法提供一个默认实现那么该抽象类的子类可以选择性地覆盖父类的某些方法来实现需求。 涉及角色 Target目标类客户需要的接口。注意由于这里讨论的是类适配器模式因此目标不可以是类Adaptee适配者类是被适配的角色已存在且无法被修改因此需要被适配一般无法获取该类的源代码Adapter适配器类核心类将Adaptee和Target进行适配即把Adaptee类转换成目标类。 优点 解耦将目标类和适配者类解耦通过引入一个适配器类来重用现有的适配者类无须修改原有结构复用适配者在原有系统中可正常使用在目标类中可充当新角色扩展可通过配置文件很方便地更换适配器也可在不修改原有代码的基础上增加新适配器符合开闭原则。 对象适配器模式还有如下优点 一个对象适配器可以把多个不同的适配者适配到同一个目标由于适配器和适配者之间是关联关系因此可以适配一个适配者的子类符合里氏代换原则。 缺点 Java不支持多继承一个适配器只能适配一个适配者适配者类不能为final类类适配器模式中的目标类只能为接口不能为类。 对象适配器模式的缺点当需要置换适配者类的某些方法时需要把适配者的子类当做真正的适配者实现过程较为复杂。 适用场景 系统需要使用现有的类而这些类的接口不符合系统的接口想要建立一个可重用的类用于与一些彼此之间没有太大关联的一些类包括一些可能在将来引进的类一起工作两个类所做的事情相同或相似但具有不同接口时旧的系统开发的类已经实现一些功能但客户端却只能以别的接口的形式访问但不希望手动更改原有类时使用第三方组件组件接口定义和自己定义的不同不希望修改自己的接口但是要使用第三方组件接口的功能。 实例 JDK Java IO中如InputStreamReader、StringReader、OutputStreamWriter、ByteArrayInputStream等。InputStreamReader是一个适配器Reader是适配者InputStream是目标。ByteArrayInputStream和OutputStreamWriter同理。 使用IDEA自带的Diagrams插件查看类的依赖关系注意要勾选Show Dependencies按钮 StringReader是适配器Reader是适配者String是目标。 Spring Spring AOPAdvisorAdapter接口 public interface AdvisorAdapter {boolean supportsAdvice(Advice advice);MethodInterceptor getInterceptor(Advisor advisor); }Advisor链需要的是MethodInterceptor拦截器对象所以每一个Advisor中的Advice都要适配成对应的MethodInterceptor对象。 其实现类有3个 HandlerAdapter Spring MVC核心组件。 SourcePollingChannelAdapter 比较 适配器模式和装饰者模式 相同点 都是结构型设计模式都使用组合思想即通过将一个对象传递给另一个对象来实现功能的扩展或转换两者都不会修改原有类的代码只是通过增加新的类来实现新的功能。 不同点 目的 适配器模式旨在解决接口不兼容的问题使现有类可以与其他类协同工作装饰者模式则是为了动态地扩展对象的功能而不改变其结构。 实现方式 适配器模式通常涉及两个不兼容接口的转换适配器本身只实现接口兼容不增加新的行为装饰者模式不改变原对象接口通过组合和方法包装来添加新行为。 适用场景 期望复用的已有的类与新系统不兼容时可考虑使用适配器模式期望可以动态地为对象添加额外的功能且功能可随时开启或关闭时可考虑使用装饰者模式。 以Java IO流举例 将一个类适配到另一个类InputStreamReader将Reader类适配到InputStream实现字节流到字符流的准换FilterInputStream继承InputStreamBufferedInputStream继承自FilterInputStream是具体的装饰器实现者将InputStream读取的内容保存在内存中而提高读取性能。 外观模式和装饰者模式 相同点都是结构型设计模式都通过组合来实现其功能装饰者模式侧重于增强对象的功能而外观模式侧重于简化系统接口。 不同点 目的 装饰者模式的目的是通过包装对象来动态扩展其功能外观模式的目的是通过提供一个简化的接口来隐藏系统复杂性。 实现方式 装饰者模式在同一个接口层次上通过递归组合的方式增加行为外观模式通过创建一个高层接口来简化对复杂子系统的访问。 使用场景 装饰者模式适用于需要动态扩展对象功能的场景外观模式适用于通过封装来简化与复杂子系统交互的场景。 代理模式和装饰者模式 与原对象实现同一个接口必须要实现原接口和持有真实的对象才能称之为代理类。代理模式一定是自身持有这个对象不需要从外部传入。用代理模式代理类可以对它的客户隐藏一个对象的具体信息。当使用代理模式时常常在一个代理类中创建一个对象的实例。注重隔离限制关注于控制对对象的访问让外部不能访问你实际的调用对象如权限控制。代理和真实对象之间的关系通常在编译时就已经确定。 参考 适配器模式
http://www.pierceye.com/news/85385/

相关文章:

  • 深圳网站建设61916wordpress主题安装后图片找不到
  • 旅游网站建设费用开网站建设公司
  • 南宁市建设工程质量安全协会网站什么样的公司需要做网站
  • 无锡军自考网站建设免费网络推广平台
  • 网站 测速度如何创造属于自己的软件
  • 网站目录设计如何做app 的模板下载网站
  • 网站建设平台是干什么的网站建设公开课
  • 企业网站开发基本流程html网页设计代码作业大一
  • 知道网站是wp程序做的如何仿站管理培训
  • 沧州网站建设熊掌号口碑好的广州注册公司
  • 湖北网站推广公司技巧四川省网站建设
  • 企业门户网站案例有什么wordpress
  • html手机网站如何制作网站后台 添加用户
  • 找百度做的网站可以过户企业管理制度标准范本
  • 广州门户网站店铺设计方案
  • WordPress显示网站加载时间wordpress 汉化函数
  • 上海这边敲墙拆旧做啥网站的比较多小程序模板多少钱一套
  • 中国交通建设集团英语网站wix和wordpress比较
  • 佛山网站关键词做网站服务器配置
  • 顺德新网站制作网站开通
  • 网站哪里备案有区别么科技网站建设公司
  • 无锡企业网站制作费用网监大队让网站备案
  • 网站如何做权重杭州哪家做企业网站
  • 医疗网站建设多少钱wordpress 视频 插件
  • 大连头条热点新闻个人seo怎么赚钱
  • 盐城城南建设局一局网站怎么做网站邮箱
  • 外卖网站开发方案wordpress 编辑器 空白
  • 新一代 网站备案推广哪个平台好
  • 网站游戏正规网站建设网址导航大全
  • 网站开发需要考虑哪些方面网站和软件建站