Structural Patterns Part 7/7: Proxy Pattern
来源:互联网 发布:立讯精密 知乎 编辑:程序博客网 时间:2024/06/06 03:47
Structural Patterns Part 7/7: Proxy Pattern
目录
- Structural Patterns Part 77 Proxy Pattern
- 目录
- Definition
- UML Class Diagram
- Implementation
Definition
Proxy Pattern提供了一种控制Real Object的创建和访问的方式,它通常代替了Real Object的功能。
一句话:
One class controls the creation of and access to objects in another class.
何时使用?一般当希望隐藏目标对象的创建和访问时(比如缓存),或者希望在访问目标对象时提供额外的逻辑(动态代理)。
使用频率: Medium High
UML Class Diagram
Implementation
考虑一个对图片的访问,因为从磁盘读取非常耗时间,所以可以使用代理,把图片缓存起来。
// Image.javapackage designpatterns.structuralpatterns.proxy;public interface Image { void display();}// ImageImpl.javapackage designpatterns.structuralpatterns.proxy;class RealImage implements Image { private String filename; public RealImage(String filename) { this.filename = filename; loadFromDisk(filename); } @Override public void display() { System.out.println("Display Image: " + filename); } private void loadFromDisk(String filename) { System.out.println("Load from Disk: " + filename); }}class ProxyImage implements Image { private RealImage ri; private String filename; public ProxyImage(String filename) { this.filename = filename; } @Override public void display() { if(null == ri) { ri = new RealImage(filename); } ri.display(); }}// ProxyDemo.javapackage designpatterns.structuralpatterns.proxy;public class ProxyDemo { public static void main(String[] args) { Image image = new ProxyImage("ProxyPattern.jpg"); //image will be loaded from disk image.display(); System.out.println(); //image will not be loaded from disk image.display(); }}// output, image loaded only onceLoad from Disk: ProxyPattern.jpgDisplay Image: ProxyPattern.jpgDisplay Image: ProxyPattern.jpg
0 0
- Structural Patterns Part 7/7: Proxy Pattern
- Structural Patterns Part 1/7: Adapter Pattern
- Structural Patterns Part 2/7: Bridge Pattern
- Structural Patterns Part 3/7: Composite Pattern
- Structural Patterns Part 4/7: Decorator Pattern
- Structural Patterns Part 5/7: Facade Pattern
- Structural Patterns Part 6/7: Flyweight Pattern
- [Special] Design Pattern - Structural Patterns - Proxy Pattern
- Design Pattern----Structural Patterns
- Design Pattern - Structural Pattern - Proxy
- Design Pattern - Structural Patterns - Adapter Pattern
- Design Pattern - Structural Patterns - Decorator Pattern
- Design Pattern - Structural Patterns - Composite Pattern
- Design Pattern - Structural Patterns - Facade Pattern
- Design Pattern - Structural Patterns - Flyweight Pattern
- Design Pattern - Structural Patterns - Bridge Pattern
- Design Pattern 7-proxy
- Creational Patterns Part 1/5: Factory Pattern
- Android EditText 自带清除按钮 (ViewGroup实现)
- 存储过程测试流程--以MySQL为例
- 遗传算法(Genetic Algorithm)
- iOS layout机制相关方法
- HashMap源码
- Structural Patterns Part 7/7: Proxy Pattern
- Android - android.view.InflateException: Binary XML file line #: Error inflating class fragment
- HashSet源码
- JDBC结合MySql完成增删改查
- 在PPT中FLASH的使用
- linux 下文件夹的复制、覆盖以及确认问题解决
- LinkedList源码
- 非常好的理解遗传算法的例子
- ArrayList源码