静态代理模式作用:
为其他对象提供一种代理,以控制对这个对象的访问,在某些情况下,一个客户不想或者不能
直接引用另外一个对象,而代理对象可以在客户与目标对象直接起到中介的作用。
静态代理模式一般涉及的角色有:
接口:代理对象和目标对象共同的行为接口。
代理角色:代理对象内部含有对真实对象的引用,从而可以操作真实角色。需要实现行为接口。
真实角色:代理类需要代理的角色,实现行为接口。
代码如下:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person =new Person();
Proxy proxy = new Proxy(person);
proxy.buy();
}
}
interface Buy{
public void buy();
}
class Proxy implements Buy{
private Buy buy;
public Proxy(Buy buy){
this.buy=buy;
}
public void buy(){
System.out.println("挑选商品");
System.out.println("比较价格");
System.out.println("确认物品");
buy.buy();
System.out.println("购买完成");
}
}
class Person implements Buy{
public void buy(){
System.out.println("付钱,拿货");
}
}
适配器模式的作用:
把一个类的接口变成客户端期待的另外一种接口,从而使接口原因不匹配而无法一起工作
的两个类能够一起工作
适配器模式一般涉及的角色有:
接口一:有一个没有实现的方法。
接口一的实现类:实现接口一的方法。
接口二:另外一个没有实现的方法
接口二的实现类:实现接口二的方法。
适配器类:是接口一的实现类,并含有接口二的真实对象引用。
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassBImp classBImp =new ClassBImp();
AdatperClassA adatperClassA=new AdatperClassA(classBImp);
working(adatperClassA);
}
public static void working(ClassA classA){ //定义一个行为,只适合classA接口实现类传参
classA.connect();
}
}
interface ClassA{
public void connect();
}
class ClassAImp implements ClassA{
public void connect(){
System.out.println("A连接好了,开始工作");
}
}
interface ClassB{
public void insert();
}
class ClassBImp implements ClassB{
public void insert(){
System.out.println("B插入完成,开始工作");
}
}
class AdatperClassA implements ClassA{
private ClassB classB;
public AdatperClassA(ClassB classB){
this.classB=classB;
}
public void connect(){
System.out.println("A连接好了,开始工作");
classB.insert();
}
}