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

兰州市住房城乡建设局网站上海营销咨询公司

兰州市住房城乡建设局网站,上海营销咨询公司,wordpress跟换域名,大连网站制作咨询文章目录 1.概念1.1 什么是装饰器模式1.2 优点与缺点 2.实现方式3. Java 哪些地方用到了装饰器模式4. Spring 哪些地方用到了装饰器模式 1.概念 1.1 什么是装饰器模式 它允许用户在不修改现有对象的代码的情况下向对象添加新的功能#xff1b;这种模式是通过创建一个包含该对… 文章目录 1.概念1.1 什么是装饰器模式1.2 优点与缺点 2.实现方式3. Java 哪些地方用到了装饰器模式4. Spring 哪些地方用到了装饰器模式 1.概念 1.1 什么是装饰器模式 它允许用户在不修改现有对象的代码的情况下向对象添加新的功能这种模式是通过创建一个包含该对象的包装对象来实现的从而扩展该对象的功能。 1.2 优点与缺点 优点: 1.灵活性和扩展性装饰器模式允许在运行时向对象添加新的行为提供了比继承更大的灵活性。 2.遵守开闭原则装饰器模式允许向系统添加新的行为而不需要修改现有代码这符合开闭原则软件实体应该对扩展开放对修改关闭。 3.代码复用装饰器可以被多个对象共享这减少了代码的重复提高了代码复用性。 4.对象功能增强在不改变原有对象的情况下可以有选择性地增强对象的功能。 5.组合优于继承装饰器模式使用对象组合而不是继承来扩展功能这有助于避免继承层次可能带来的复杂性和脆弱性。 缺点: 1.增加复杂性装饰器模式可能会增加系统的复杂性因为需要创建多个小对象来表示不同的功能。2.调试困难由于装饰器可以嵌套使用调试和理解运行时的行为可能会变得更加困难。 3.性能问题装饰器模式可能会引入额外的性能开销因为需要创建额外的对象并且可能需要通过多个装饰器来解析方法调用。 4.设计复杂如果使用不当装饰器模式可能会导致设计变得复杂特别是当装饰器之间的关系变得复杂时。 5.接口限制装饰器模式要求装饰器和被装饰的对象实现相同的接口这在某些情况下可能是不切实际的。 2.实现方式 ①定义接口 public interface Beverage {String getDescription();double cost(); }②创建一个实现了Beverage接口的具体类SimpleCoffee public class SimpleCoffee implements Beverage {Overridepublic String getDescription() {return Simple Coffee;}Overridepublic double cost() {return 1.0;} }③定义一个装饰器类CondimentDecorator它也实现了Beverage接口并持有一个Beverage对象的引用 public abstract class CondimentDecorator implements Beverage {protected Beverage beverage;public CondimentDecorator(Beverage beverage) {this.beverage beverage;}public abstract String getDescription(); }④创建具体的装饰器类比如Milk、Sugar和Chocolate它们都扩展了CondimentDecorator并添加了各自的成本和描述 public class Milk extends CondimentDecorator {public Milk(Beverage beverage) {super(beverage);}Overridepublic String getDescription() {return beverage.getDescription() , Milk;}Overridepublic double cost() {return beverage.cost() 0.5;} }public class Sugar extends CondimentDecorator {public Sugar(Beverage beverage) {super(beverage);}Overridepublic String getDescription() {return beverage.getDescription() , Sugar;}Overridepublic double cost() {return beverage.cost() 0.1;} }public class Chocolate extends CondimentDecorator {public Chocolate(Beverage beverage) {super(beverage);}Overridepublic String getDescription() {return beverage.getDescription() , Chocolate;}Overridepublic double cost() {return beverage.cost() 0.3;} }⑤ 使用 public class DecoratorDemo {public static void main(String[] args) {Beverage coffee new SimpleCoffee();System.out.println(coffee.getDescription() $ coffee.cost());coffee new Milk(coffee);coffee new Sugar(coffee);coffee new Chocolate(coffee);System.out.println(coffee.getDescription() $ coffee.cost());} }3. Java 哪些地方用到了装饰器模式 Java I/O 流 Java的I/O库广泛使用了装饰器模式来增强基本输入输出流的功能。例如BufferedInputStream和BufferedOutputStream类通过装饰基本的InputStream和OutputStream来提供缓冲功能。同样DataInputStream和DataOutputStream为基本的流添加了读写基本数据类型的能力。 Java Servlet API Java Servlet API中的HttpServletRequestWrapper和HttpServletResponseWrapper类允许开发者通过装饰原始的HttpServletRequest和HttpServletResponse对象来添加或修改功能。 Java动态代理 Java的动态代理机制允许在运行时创建一个实现了一组接口的代理类实例。这个代理实例实际上是一个装饰器它可以在不修改原始对象代码的情况下为原始对象添加新的行为如事务管理、日志记录等。 Spring框架 Spring框架在很多地方使用了装饰器模式例如在AOP面向切面编程中Spring会创建代理对象来包装目标对象以实现事务管理、权限检查等横切关注点的功能。 Apache Commons IO Apache Commons IO库提供了一些装饰器类如ProxyInputStream和ProxyOutputStream这些类可以用来创建自定义的流装饰器。 JDBC JDBC驱动程序有时会使用装饰器模式来增强或修改原始的Connection、Statement或ResultSet对象的行为。 JAX-RS JAX-RSJava API for RESTful Web Services中的客户端API允许使用装饰器模式来增强或修改Client、WebTarget、Invocation等对象的行为。 4. Spring 哪些地方用到了装饰器模式 AOP面向切面编程 Spring AOP允许通过声明式方式添加横切关注点如日志记录、事务管理、安全检查等到目标对象。Spring创建代理对象来包装目标对象这些代理对象在调用目标方法前后执行额外的代码。这实际上是一种装饰器模式的应用它允许在不修改目标对象代码的情况下增强其行为。 事务管理 在Spring中事务管理通常是通过AOP实现的。Spring可以为目标方法创建一个代理该代理在方法执行前后管理事务的开启和关闭而无需修改目标方法的代码。 Spring Security Spring Security使用方法拦截器来实现安全控制。它可以为目标方法创建代理这些代理在方法执行前检查用户的权限如果用户没有足够的权限则不允许执行目标方法。 Spring Data JPA Spring Data JPA中的仓库Repository可以通过自定义的实现来扩展。开发者可以创建一个自定义的仓库实现并通过Spring的配置将其与标准仓库接口关联起来。这实际上是在使用装饰器模式来扩展仓库的功能。 Spring WebFlux Spring WebFlux中的WebFilter和WebExceptionHandler可以被视为装饰器模式的应用。它们允许在请求处理的各个阶段添加额外的处理逻辑而不需要修改原始的处理器代码。 Spring Cloud 在Spring Cloud中装饰器模式被用于实现服务断路器、负载均衡等功能。例如Hystrix断路器可以通过装饰原始的服务调用逻辑来添加断路器功能从而在服务调用失败时提供备选方案。 Spring Boot Spring Boot自动配置的原理也可以看作是装饰器模式的一种应用。Spring Boot可以自动配置各种组件如数据源、事务管理器等这些自动配置的组件可以被用户的自定义配置所增强或覆盖。
http://www.w-s-a.com/news/922453/

相关文章:

  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网
  • 云服务器和网站空间郑州做招商的网站
  • 规模以上工业企业的标准北京seo结算
  • 软件开发过程模型如何做网站性能优化
  • 网站建站公司广州南京江北新区楼盘
  • 哪些做展架图的网站好开发公司2022年工作计划
  • 磨床 东莞网站建设wordpress下载类主题系统主题
  • 免费学编程网站芜湖做网站都有哪些
  • 能发外链的网站门户网站网页设计规范
  • 网站建设所需人力南城区网站建设公司
  • 网站做图尺寸大小手机模板网站模板下载网站有哪些内容
  • 德阳市建设管理一体化平台网站做美食网站
  • 怎么做自己的推广网站2024年瘟疫大爆发
  • vps正常网站打不开linux网站建设
  • 福州网站快速排名在一个网站的各虚拟目录中默认文档的文件名要相同
  • 网站开发 流程图网站开发用哪个linux
  • 怎么用自己电脑做服务器发布网站吗seo门户网价格是多少钱
  • 备案网站可以做影视站网站400
  • 四川住房与城乡建设部网站注册登记
  • 网站建设第三方沈阳工程最新动态
  • 兰州做网站客户上海企业在线登记
  • 新乡公司做网站wordpress被大量注册
  • 小语种服务网站公众号平台建设网站
  • 免费做mc皮肤网站企业网站建设合同模板
  • 做网站可以申请个体户么网站的定位分析
  • jsp做的零食网站下载wordpress侧边栏折叠
  • 帝国网站单页做301南京旅游网站建设公司