结构型模式之门面模式(Facade)

本文深入解析了门面模式的概念、结构、优势及应用场景,通过实例展示了如何利用门面模式简化系统访问与管理,降低耦合度,提升系统稳定性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

门面模式(Facade):又称外观模式,其定义为:“外部与一个子系统的通信必须通过一个统一的门面对象进行”。其实可以理解为“一个子系统,只能对应一个具有单个实例的门面 类”。当然一个由多个子系统构成的大系统,可以有多个门面类;

 门面模式结构:


  门面角色(Facade):客户端可以调用这个角色的方法,此角色知晓相关子系统的功能与责任。在正常情况下,本角色会将所有从客户端发来的请求到相应的 子系统去。

 子系统角色(subsystem):可以同时有一个或者多个系统,每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端调用,或者被门面角色调用。相对于子系统而言,门面相当于一个客户端而已。

实例:近期股市大涨,买卖股的人非常的多,而刚刚进入股市的人非常容易亏钱,这是基金应运而生,基金就是投资经理人把购买基金的钱拿去投资,然后大家获利。
而购买基金的人只需要知道基金的上涨还是下跌。
门面类

public class Fund
{
	public Stock1 stc1;
	public Stock2 stc2;
	public Bond bond;
	public NationalDebt nad;
	public Realty ret;
	public Fund()
	{
		stc1 = new Stock1();
		stc2 = new Stock2();
		bond = new Bond();
		nad = new NationalDebt();
		ret = new Realty(); 		
	}
	public void buyFund();
	{
		stc1.buy();
		stc2.buy();
		bond.buy();
		nad.buy();
		ret.buy();
	}
	public void sellFund()
	{
		stc1.sell();
		stc2.sell();
		bond.sell();
		nad.sell();
		ret.sell();
	}
}

系统类1
public class Stock1 
{
	public void buy()
	{
		System.out.println("buy stock1");
	}
	public void sell()
	{
		System.out.println("sell stock1");
	}
}

系统类2
public class Stock2 
{
	public void buy()
	{
		System.out.println("buy Stock2");
	}
	public void sell()
	{
		System.out.println("sell Stock2");
	}
}
系统类3
public class Bond 
{
	public void buy()
	{
		System.out.println("buy Bond");
	}
	public void sell()
	{
		System.out.println("sell Bond");
	}
}
系统类4
public class NationalDebt 
{
	public void buy()
	{
		System.out.println("buy NationalDebt");
	}
	public void sell()
	{
		System.out.println("sell NationalDebt");
	}
}


系统类5
public class Realty
{
	public void buy()
	{
		System.out.println("buy Realty");
	}
	public void sell()
	{
		System.out.println("sell Realty");
	}
}
测试类
public class testFacade
{
	public static void main(String[] args)
	{
	 Fund jijin = new Fund();
	 jijin.buyFund();
	 jijin.sellFund();
	}
}
优势
通过隐藏子系统组件,降低了客户处理的对象数量,以提升各个子系统的应用便捷性。
门面模式降低了子系统和客户端的耦合度,促进系统的可扩展性和可维护性;
门面模式通过层次化架构方式,可提升整个系统的稳定性。
应用场景
当设计者要求隐藏旧系统时,可以使用门面模式去实现;
如果子系统之间的依赖性较高,可以通过门面模式降低;
当子系统相当复杂时,可以通过门面模式提供简单的接口,以提高子系统的易用性和稳定性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值