设计模式读书笔记-1代理模式Proxy(2)
1.虚拟代理与状态模式相结合
State
package headfirst.proxy.virtualproxy;import java.awt.Component;import java.awt.Graphics;import java.net.URL;import javax.swing.Icon;class ImageProxyWithState implements Icon { State currentState; State imageNotLoadedState;State imageLoadedState; public ImageProxyWithState(URL url) { imageNotLoadedState = new ImageNotLoadedState(this, url);imageLoadedState = new ImageLoadedState();currentState = imageNotLoadedState;} public State getCurrentState() {return currentState;}public void setCurrentState(State currentState) {this.currentState = currentState;}public State getImageNotLoadedState() {return imageNotLoadedState;}public void setImageNotLoadedState(State imageNotLoadedState) {this.imageNotLoadedState = imageNotLoadedState;}public State getImageLoadedState() {return imageLoadedState;}public void setImageLoadedState(State imageLoadedState) {this.imageLoadedState = imageLoadedState;}public int getIconWidth() {return currentState.getIconWidth();} public int getIconHeight() {return currentState.getIconHeight();} public void paintIcon(final Component c, Graphics g, int x, int y) {currentState.paintIcon(c, g, x, y);}}