代理设计模式
为其它对象提供一种代理,以控制对该对象的访问。
//被代理接口(主题)
interface Shopping{
public void shopping();
}
//代理类
class Proxy implementsShopping{
private Shopping target;//目标,要代理对象
public Proxy(Shopping target){
this.target = target;
}
public void shopping(){
System.out.println("开始找商品");
System.out.println("比较商品的价格");
System.out.println("确定要购买的商品");
//if()
target.shopping();
System.out.println("完成本次购物");
}
}
//被代理类
class Person implementsShopping{
//让被代理类真正关注具体的业务逻辑
public void shopping(){
System.out.println("付钱,拿到自己心仪的商品");
}
}
public class Test{
public static void main(String[] args){
Shopping s = new Person();
Proxy p = new Proxy(s);
p.shopping();
}
}
适配器模式
//适配器模式
//让两个不兼容的接口可以一起工作。
public class Test29{
public static void main(String[] args){
PowerA a = new PowerAImpl();
//connect(a);
PowerB b = new PowerBImpl();
PowerAdapter pa = new PowerAdapter(b);
connect(pa);
}
//此方法只能接收PowerA接口,不兼容其它接口
public static void connect(PowerA powerA){
System.out.println("开始工作之前的准备");
powerA.connect();
//
}
/*
public static void insert(PowerB powerB){
powerB.insert();
}
*/
}
//适配器:实现的接口表示要匹配的接口,内部维护的接口表示被匹配的接口
class PowerAdapterimplements PowerA{
private PowerB powerB;
public PowerAdapter(PowerB powerB){
this.powerB = powerB;
}
public void connect(){
powerB.insert();
}
}
//电源A
interface PowerA{
public void connect();
}
class PowerAImpl implementsPowerA{
public void connect(){
System.out.println("电源A已连接,开始工作");
}
}
//电源B
interface PowerB{
public void insert();
}
class PowerBImpl implementsPowerB{
public void insert(){
System.out.println("电源B已插入,开始工作");
}
}