JAVA设计模式-外观模式

概念

外观模式对外隐藏了系统的复杂性,向客户端提供了统一的访问接口,使得系统更易于被使用。

  • 门面(Facade Class):客户端调用门面类方法。门面类了解一个或多个子系统的功能和责任,将请求委派到相应的子系统去。
  • 子系统(SubSystem Classes):每个子系统都不是一个单独的类,可以是一个类、一个功能模块或者一个完整的系统。子系统并不知道门面的存在,对于子系统而言,门面仅仅是一个客户端而已。

例子

通过买基金的例子实现门面模式。我们知道,直接购买股票风险大,很多人会选择购买基金,其实在基金业务的背后,也是对股票买卖进行了整合,而这些操作这些对客户来说都是透明的。

Stock:股票买入卖出

public class Stock1 {
    public void buy(){
        System.out.println("stock1买入");
    }

    public void sell(){
        System.out.println("stock1卖出");
    }
}
public class Stock2 {
    public void buy(){
        System.out.println("stock2买入");
    }

    public void sell(){
        System.out.println("stock2卖出");
    }
}
public class Stock3 {
    public void buy(){
        System.out.println("stock3买入");
    }

    public void sell(){
        System.out.println("stock3卖出");
    }
}

Fund(基金):

public class Fund {
    private Stock1 stock1 = new Stock1();
    private Stock2 stock2 = new Stock2();
    private Stock3 stock3 = new Stock3();

    public void buy(){
        stock1.buy();
        stock2.buy();
        stock3.buy();
    }

    public void sell(){
        stock1.sell();
        stock3.sell();
    }
}

Client(客户端):

public class Client {
    public static void main(String[] args) {
        Fund fund = new Fund();
        fund.buy();
        fund.sell();
    }
}

优点:

  • 降低了对子系统的耦合
  • 隐藏子系统细节,提升了安全性

缺点:

不符合开闭原则,对修改关闭,对扩展开放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值