外观模式
发布日期:2021-09-25 11:48:16 浏览次数:1 分类:技术文章

本文共 1999 字,大约阅读时间需要 6 分钟。

外观模式Facade,为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

例子:炒股

投资者可能面对多种股票

package Facade;public class Stock1 {	public void sell(){		System.out.println("股票1卖出");	}	public void buy(){		System.out.println("股票1买入");	}}
package Facade;public class Stock2 {	public void sell(){		System.out.println("股票2卖出");	}	public void buy(){		System.out.println("股票2买入");	}}
package Facade;public class Stock3 {	public void sell(){		System.out.println("股票3卖出");	}	public void buy(){		System.out.println("股票3买入");	}}
package Facade;public class realty {	public void sell(){		System.out.println("房地产卖出");	}	public void buy(){		System.out.println("房地产买入");	}}
package Facade;public class nationalDebt {	public void sell(){		System.out.println("国债卖出");	}	public void buy(){		System.out.println("国债买入");	}}

增加一个基金类,它需要了解所有的股票或其他投资方法的方法或者属性,进行组合,以备外界调用。

package Facade;public class Fund {	Stock1 gu1;	Stock2 gu2;	Stock3 gu3;	nationalDebt nd;	realty rt;	public Fund(){		gu1=new Stock1();		gu2=new Stock2();		gu3=new Stock3();		nd=new nationalDebt();		rt=new realty();	}	public void buyFund(){		gu1.buy();		gu2.buy();		gu3.buy();		nd.buy();		rt.buy();	}	public void sellFund(){		gu1.sell();		gu2.sell();		gu3.sell();		nd.sell();		rt.sell();	}}

客户端去调用,此时用户不需要了解股票,甚至可以对股票一无所知,参与股票的具体买卖都由基金公司完成

package Facade;public class Test {	public static void main(String[] args) {		// TODO Auto-generated method stub		Fund jijin=new Fund();		jijin.buyFund();		jijin.sellFund();	}}

Facade方法实现中,一般是负责把客户端的请求转发给子系统内部的各个模块进行处理,Facade的方法本身并不进行功能的处理,只是实现一个功能的组合调用。

优点:

1.松散耦合,外观模式送伞了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护

2.简单易用,外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟外观交互就可以了,相当于外观类为外部客户端使用子系统提供了一站式服务

3.更好的划分访问层次,有些方法是对系统外的,有些方法是系统内部使用的,把需要保留给外部的功能集中到外观中,这样既方便客户端使用,也很好的隐藏了内部的细节

针对上述优点,何时选用外观模式?

1.希望为一个复杂的子系统提供一个简单接口,使用外观对象实现大部分客户需要的功能,从而简化客户的使用

2.想让客户程序和抽象类的实现部分松散耦合,使用外观对象将这个子系统与它的客户分离开,从而提高子系统的独立性和可移植性

3.如果构建多层结构的系统,可以考虑使用外观模式,使用外观对象作为每层的入口,既可以简化层间调用,也可以松散层次之间的依赖关系

参考:

《大话设计模式》

https://my.oschina.net/xianggao/blog/615213

转载地址:https://blog.csdn.net/Autumn03/article/details/80838783 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:观察者模式
下一篇:模板方法模式

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月03日 11时23分09秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章