java设计模式(二)
2015-08-03 22:03
441 查看
2. 代理模式(Proxy)
适用场景:秀才让小六代其求婚
![](http://dl2.iteye.com/upload/attachment/0110/6608/22b0822e-dbb3-33dd-a398-101d2c4e2f44.jpg)
abstract class QiuHun{
public abstract void songHua ();
}
class XiuCanQiuHun extends QiuHun {
@Override
public void songHua() {
System.out.println("秀才送花");
}
}
class Proxy extends QiuHun {
XiuCaiQiuHun xcqh;
@Override
public void songHua () {
if (xcqh == null) {
xcqh = new XiuCaiSongHua();
}
xcqh.songHua();
}
}
客户端代码:
Proxy proxy = new Proxy();
proxy.songHua();
上述代理模式为静态代理。静态代理的缺点:如果Subject接口发送变化,那么代理类和具体的目标实现类都要发生变化。动态代理可以解决此问题。
动态代理:Java JDK实现了动态代理,在java.lang.reflect包下,提供了一个Proxy类和一个InvocationHandler接口。
3. 适配器(Adapter)模式
适用场景:
适用场景:秀才让小六代其求婚
![](http://dl2.iteye.com/upload/attachment/0110/6608/22b0822e-dbb3-33dd-a398-101d2c4e2f44.jpg)
abstract class QiuHun{
public abstract void songHua ();
}
class XiuCanQiuHun extends QiuHun {
@Override
public void songHua() {
System.out.println("秀才送花");
}
}
class Proxy extends QiuHun {
XiuCaiQiuHun xcqh;
@Override
public void songHua () {
if (xcqh == null) {
xcqh = new XiuCaiSongHua();
}
xcqh.songHua();
}
}
客户端代码:
Proxy proxy = new Proxy();
proxy.songHua();
上述代理模式为静态代理。静态代理的缺点:如果Subject接口发送变化,那么代理类和具体的目标实现类都要发生变化。动态代理可以解决此问题。
动态代理:Java JDK实现了动态代理,在java.lang.reflect包下,提供了一个Proxy类和一个InvocationHandler接口。
3. 适配器(Adapter)模式
适用场景:
相关文章推荐
- Java程序员从笨鸟到菜鸟之(三十一)大话设计模式之设计模式遵循的七大原则
- java设计模式(四)---原型模式
- java 设计模式之六大原则
- 设计模式_适配器模式(Java)
- Java设计模式
- 追MM与Java的23种设计模式
- java设计模式-Memento(备忘录)模式
- Java经典设计模式之五大创建型模式(附实例和详解)
- java设计模式——工厂模式
- Java23种设计模式案例:抽象工厂模式(abstractFactory)
- Java设计模式 - 适配器模式
- Java设计模式之单例模式
- java设计模式初识:设计模式简介
- java设计模式之组合模式
- Java经典23种设计模式之行为型模式(二)
- Java设计模式百例 - 观察者模式
- 轻松学习JAVA设计模式
- Java 设计模式 装饰者模式
- Java IO学习【10】装饰设计模式
- Java设计模式之单例模式