代理设计模式和单例设计模式

代理模式是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。俗称中介,例如房产中介这种。

举个例子:我想要向你租房子,但是我现在没有时间,我在做我自己的事情,同时我还要考虑很多问题,交通便不便利,上下班放不方便等等。所以我就委托一个中介来帮我看房子。我们两个不用见面,同时不影响我的事情,就可以把事情办好。

好处:就是尽量隐藏自己,并且能对目标方法进行加强。

想要代理一个对象就要和代理对象有相同的行为,那么就要实现同一个接口。

一 静态代理:自己写代理对象

举个例子:例如潘金莲和西门庆,潘和西一定不能明晃晃的见面,那么就一定要有一个人来替他们传递信息--->王婆,那么就可以来实现。王婆就是代理对象

(1)接口

(2)委托人 潘金莲

 

(3)中介 王婆 注意:构造器中的接口为参数 是使用了接口的多态

 (4)接收人 西门庆

二 动态代理:jdk自动生成对象 利用反射技术:对类进行剖析

还是要有接口 委托人 和 接收人

package DaiLi;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//写一遍动态代理
public class XMP {public static void main(String[] args) {//1 你要找谁IN pan=new PAN();IN li=new LI();//自动生成代理对象   必须要有接口/** k1:被代理对象的类加载器* k2:被代理对象的行为 类对象的方法* k3:具体策略* *///动态代理用很多的次数IN o=(IN)Proxy.newProxyInstance(pan.getClass().getClassLoader(),pan.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {int a=(int)method.invoke(pan,args);//method.invoke(li,args);method.invoke(li);return a;}});int eat =o.eat(22);System.out.println(eat);}
}

 在main主函数中 

(1)首先要先声明是谁--->委托人是谁

(2)使用JDK自己的代理对象,调用Proxy.newProxyInstance函数有三个参数

pan.getClass().getClassLoader(),被代理对象的类加载器
,pan.getClass().getInterfaces(),被代理对象的行为 类对象的方法 利用反射 获取到接口中实现的方法
new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {method.invoke(pan);//利用反射 将对象传进去,如果有参数把args加进去,如下//method.invoke(li,args);method.invoke(li);//调用同一个方法 有返回值的和无返回值的方法不能一起调用return null;//可以有返回值 利用多态中的强转}});

 

单例设计模式:保证在应用中只有一个对象就行了。

(1) 创建私有 静态对象

(2)构造方法为私有

(3)创建获取对象方法

分为懒汉式

// 懒汉式
public  class User{
private static User user =new User();
private User(){};
public static User getUser(){return user;
}
}

饿汉式

// 饿汉式
public  class User{
private static User user =null;
private User(){};
public static User getUser(){if(user ==null){user =new User();return user;}return user;
}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部