zoukankan      html  css  js  c++  java
  • 装饰者模式(Decorator Pattern)&AOP

    装饰模式(又被称之为: "Decorator Pattern")指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
    AOP&静态和动态代理概念

    优点

       1. Decorator模式与继承关系的目的都是要扩展对象的功能,但是Decorator可以提供比继承更多的灵活性。
       2. 通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。

    缺点

       1. 这种比继承更加灵活机动的特性,也同时意味着更加多的复杂性。
       2. 装饰模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。
       3. 装饰模式是针对抽象组件(Component)类型编程。但是,如果你要针对具体组件编程时,就应该重新思考你的应用架构,以及装饰者是否合适。当然也可以改变Component接口,增加新的公开的行为,实现“半透明”的装饰者模式。在实际项目中要做出最佳选择。

    方法加强:

        1.继承(获取构造器)
        2.装饰者模式(静态代理)
        3.动态代理
     

    静态代理

    装饰者书写步骤:
        1.要求装饰者和被装饰者实现同一个接口或者继承同一个类
        2.装饰者中要有被装饰者的引用
        3.对需要加强方法进行加强
        4.对不需要加强的方法调用原来的方法即可
    ![调用装饰者模式][2]

    实现装饰者模式:
    ![装饰者模式][3]

    动态代理

    在项目运行的时候才创建一个代理对象,对方法进行增强(控制)
     - 方式1:
        jdk中Proxy类,前提:实现接口
     - 方式2:
        spring中cglib,前提:继承类
    ## 使用方式1-实现接口 ##
    动态的在内存中创建一个代理对象    
        Object Proxy.newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)
    参数说明:
        ClassLoader:代理对象类加载器 一般我们使用的是被代理对象的类加载器
        Class[]:代理对象需要实现接口 一般我们使用的是被搭理对象所实现的所有接口(可以通过class类的getInterfaces()方法获取所有的接口)
        InvocationHandler:执行处理类.重写接口的抽象方法,在抽象方法中对需要方法进行加强

    invocationHandler中需要重写的方法
        Object invoke(Object proxy, Method method, Object[] args)
    参数说明:
        proxy:代理对象
        method:当前执行的方法
        args:当前方法执行的时候所需要的参数
            (若调用原来的方法,方法有参数传递args即可,若方法没有参数可不传递)
        返回值:就是当前method对象执行的返回值

    动态代理代码演示

    ![动态代理接口][4]
    ![被代理的类][5]

    ![动态代理][6]
  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/sybk/p/10004750.html
Copyright © 2011-2022 走看看