Facade 外观模式
注:外观模式是结构型设计模式,为子系统中的一组接口提供一致的界面,facade提供了一高层接口,这个接口使得子系统更容易使用。
子系统已经有一系列的接口,为了让子系统更好的使用,使用外观模式,开放一些接口,有序的调用子系统的一些方法,实现一些业务功能。使客户端的调用更加的抽象,客户端与子系统降低了耦合。
使用模式前
使用模式后
大家都知道,对一个购物子系统来说,购物操作,可以抽象为两步:
1,用户账户减去相应的金额
2,商家帐户添加相应的金额
帐户金额类
package com.pattern.structure.facade; /** * 帐户金额 * */ public class Account { private int sum ; public Account(int n) { this.sum = n ; } public void change(int m) { System.out.print("帐号金额从 " + sum + " 到 "); sum += m ; System.out.println(sum); } public int getSum() { return sum; } public void setSum(int sum) { this.sum = sum; } }
外观模式实现类
package com.pattern.structure.facade; public class Facade { private int buyerSum = 100 ; private int sellerSum = 100 ; public void buy(int goodsPrice) { Account buyer = new Account(buyerSum) ; System.out.println("买家 "); buyer.change( - goodsPrice); Account seller = new Account(sellerSum) ; System.out.println("卖家"); seller.change(goodsPrice); } }
不使用外观模式的客户端
package com.pattern.structure.facade; /** * 不实用外观模式 * */ public class Client1 { public static void main(String[] args) { int buyerSum = 100; int sellerSum = 100; int goodsPrice = 10; Account buyer = new Account(buyerSum); System.out.println("买家 "); buyer.change( - goodsPrice); Account seller = new Account(sellerSum); System.out.println("卖家"); seller.change(goodsPrice); } }
使用外观模式的客户端类
package com.pattern.structure.facade; /** * 使用外观模式 * */ public class Client2 { public static void main(String[] args) { int goodsPrice = 10; Facade facade = new Facade() ; facade.buy(goodsPrice); } }
从上面代码实例可以看出,使用外观模式后,客户端调用,涉及了更少的购物子系统的业务,降低了客户端和子系统的耦合。
外观模式通用类图
------
文章只为技术交流学习,若所写有误,请斧正,评论或消息与我,为不误导后来学习的人;若有不小心所写侵权,请告知我;若转载,请注明出处。
松下问童子,言师采药去。
只言此山中,云深不知处。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步