首先根据资料进行小的整理

                      我们所说的设计模式有23种,可以分为以下三大类:                                      

                                      创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。

                                      结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。

                                     行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备                                                                                忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

                     今天主要说一下代理模式:静态代理和动态代理

                                     静态代理:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件                                                          就已经存在了。

                                    步骤如下:

                                                        1、定义业务接口

                                                        2、被代理类实现业务接口

                                                        3、定义代理类并实现业务接口

                                                        4、通过客户端进行调用

                       代码如下:               定义业务接接口

设计模式之——代理模式

                                                       被代理类实现接口

设计模式之——代理模式

                                                        代理类实现接口

设计模式之——代理模式

                                       客户端调用

设计模式之——代理模式

                                  结果如下:

设计模式之——代理模式

                     下面是动态代理:动态代理类:在程序运行时,运用反射机制动态创建而成。 

                                  步骤如下:

                                                        1、创建被代理的接口和类

                                                        2、创建 InvocationHandler接口的实现类,在invoke方法中实现代理逻辑

                                                        3、使用Proxy的newProxyInstance方法创建一个代理对象

                                                        4、使用创建出来的代理对象

                                                       用到的接口:InvocationHandler     用到的类:Proxy

                                                     步骤1与静态代理一致,这里不重复。

                                                      创建 InvocationHandler接口的实现类,在invoke方法中实现代理逻辑

设计模式之——代理模式

                                         使用Proxy的newProxyInstance方法创建一个代理对象

设计模式之——代理模式

                                         使用创建出来的代理对象,调用被代理类的方法,结果如下

设计模式之——代理模式

                          综上所述:我们可以看到动态代理并没有提前创建出来相关的代理类及其对象,而是在程序运行时,而是通过反射,给Proxy.newProxyInstance()方法传入一个什么类型的接口,就会创建出一个对应的实现类及其对象,再通过InvocationHandler接口的实现类中的invoke()方法进行输出。

以上纯属个人见解,不足之处望见谅。

相关文章: