代理模式
代理模式有2种应用场景
1.权限控制。
2.功能增强。
例:一酒厂不直接卖酒,通过代理商来卖酒,代理商进行包装及返点卖给客户。
直接上代码
public class WineProxyTest {
public static void main(String[] args) {
WineProxyStore wineProxyStore = new WineProxyStore();
wineProxyStore.sell();
}
}
interface WineFactory {
// 抽象工厂厂家卖酒
void sell();
}
class WineFactoryImpl implements WineFactory {
@Override
public void sell() {
System.out.println("厂家真正卖酒");
}
}
class WineProxyStore implements WineFactory {
private WineFactoryImpl wineFactory;
@Override
public void sell() {
if (wineFactory == null) {
wineFactory = new WineFactoryImpl();
}
preSell();
wineFactory.sell();
postSell();
}
private void postSell() {
System.out.println("代理商返点");
}
private void preSell() {
System.out.println("代理商包装");
}
}
通过代理商代理将酒卖了出去。
参考资料:
1.http://c.biancheng.net/view/1359.html
代码地址:https://gitee.com/zhoujie1/design-mode-and-principle.git