设计模式-外观模式(门面模式)

外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更容易使用。
例子:
假如我现在要买3支股票,等收益了在卖出,那么现在是这样的
1.定义三只股票
//股票1 class shares1{ public void buy1(){ System.out.println("股票1买入"); }; public void sell1(){ System.out.println("股票1卖出"); }; } //股票2 class shares2{ public void buy2(){ System.out.println("股票2买入"); }; public void sell2(){ System.out.println("股票2卖出"); }; } //股票3 class shares3{ public void buy3(){ System.out.println("股票3买入"); }; public void sell3(){ System.out.println("股票3卖出"); }; }
2.操作买入和卖出
public static void main(String[] args) { shares1 shares1 = new shares1(); shares2 shares2 = new shares2(); shares3 shares3 = new shares3(); shares1.buy1(); shares2.buy2(); shares3.buy3(); shares1.sell1(); shares2.sell2(); shares3.sell3(); }
但是这样太麻烦了,使用了外观模式之后 就相当于是买了基金,我不需要甚至是不知道有股票的存在,操作基金的买入卖出即可。其实就是加了一层而已。
增加基金,用基金来操作股票,股票的三个类不变
//基金 class Fund { private Shares1 shares1; private Shares2 shares2; private Shares3 shares3; public Fund(Shares1 shares1, Shares2 shares2, Shares3 shares3) { this.shares1 = shares1; this.shares2 = shares2; this.shares3 = shares3; } public void buy(){ shares1.buy1(); shares2.buy2(); shares3.buy3(); } public void sell(){ shares1.sell1(); shares2.sell2(); shares3.sell3(); } }
买卖改为买卖基金
public static void main(String[] args) { Fund fund = new Fund(new Shares1(), new Shares2(), new Shares3()); fund.buy(); fund.sell(); }
总结:
外观模式本质就是加一层,用来封装复杂的功能,提供一个统一的入口,使得调用方无须知道细节逻辑
代理模式和外观模式的的区别
代理模式强调的是一对一,一个代理类代理一个类
外观模式强调的是一对多,一个外观类对应多个类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端