关于动态代理---模板方法模式,工厂模式,依赖倒转

本文介绍了动态代理的工作原理,包括类的结构与生成规则。同时探讨了模板方法模式和工厂模式的设计理念及其应用场景,帮助读者理解面向对象设计的核心概念。

     动态代理

1)包,如果所代理的接口都是public,那么它将被定义在顶层包(即包路径为空)

    如果所代理的接口中有非public的接口,那么它将被定义在该接口所在的包。

2)该类有final和public修饰符

3)类名格式是"$ProxyN"

4) 类图 是extends java.lang.reflect.Proxy implements cls.getInterfaces();

5)hashCode,equals和toString也会被分派到invoke方法中执行

6)当代理类的一组接口有重复声明的方法,被调用时,代理类总是从排在前面的接口中获取方法对象。并分派给调用处理器。而无论代理类实例是否正在以该接口(或继承于该接口的子接口)的形式被外部引用

7)需被代理的所有非public接口必须在同一个包中,所有接口必须对类装载器可见。

  数目不能超过65535

8)如果在invoke方法中的确产生了接口方法声明中不支持的异常,会抛出UndeclaredThrowableException

是一个RuntimeException 类型,-->然后getCause

 

模板方法模式

 

1)一次性实现一个算法的不变部分,并将可变部分留给子类来实现

2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复

3)控制子类扩展。

   模板方法只在特定点调用操作,这样就只允许在这些点进行扩展或将模板方法设为final就可以了

4)是由父类的模板方法来控制子类中的具体实现,这样在实现子类的时候,不需要对业务流程有太多的了解

 

工厂模式

 

工厂方法模式: Factory Method,Virtual Contructor,Polymorphic Factory 

            是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来。

 

抽象工厂模式: 可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型情况下,创建多个产品族中的产品对象

        抽象工厂模式是"抽象产品角色"的工厂

 

工厂方法模式针对的是一个产品等级结构。

抽象工厂模式针对的是多个产品等级结构

 

 

依赖倒转原则

 

抽象不应当依赖于细节

细节应当依赖于抽象

要针对接口编程,不要针对实现编程

变量的静态类型和真实类型

 

Static Type,Apparent type

Actual Type

 

抽象类是一个类的部分实现

 

IOC inverse of control

DI dependence injection

orm object relational mapping

 

由容器控制对象之间的依赖关系,而不是具体代码,这就是所谓的控制反转

 

所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,就是由容器动态的将某种依赖关系注入到组件之中。

 

依赖注入的类型:

  接口注入

  setter注入

  构造子注入

 

cglib :net.sf.cglib.proxy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值