目录
1.外观模式的概念
2.外观模式的结构图
3.练习的例子
股票1:
/**
* 股票类1
*/
public class Stock1 {
public void buy(){
System.out.println("买股票");
}
public void sell(){
System.out.println("卖股票");
}
}
股票2:
/**
* 股票类2
*/
public class Stock2 {
public void buy(){
System.out.println("买股票");
}
public void sell(){
System.out.println("卖股票");
}
}
股票3:
/**
* 股票类3
*/
public class Stock3 {
public void buy(){
System.out.println("买股票");
}
public void sell(){
System.out.println("卖股票");
}
}
债券:
/**
* 债券类
*
*/
public class NationalDebtl {
public void buy(){
System.out.println("买股票");
}
public void sell(){
System.out.println("卖股票");
}
}
基金类:
/**
* 基金类
*/
public class Fund {
private NationalDebtl nationalDebtl;
private Stock1 stock1;
private Stock2 stock2;
private Stock3 stock3;
public Fund(){
stock1 = new Stock1();
stock2 = new Stock2();
stock3 = new Stock3();
nationalDebtl = new NationalDebtl();
}
/**
* 购买基金
*/
public void buy(){
stock1.buy();
stock2.buy();
stock3.buy();
nationalDebtl.buy();
}
/**
* 出售基金
*/
public void sell(){
stock1.sell();
stock2.sell();
stock2.sell();
nationalDebtl.sell();
}
}
客户端:
public class Test {
public static void main(String[] args) {
Fund fund = new Fund();
//基金购买
fund.buy();
//基金赎回
fund.sell();
}
}
4.总结
外观Facade 可以提供一个简单的接口,减少模块之间依赖。在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但因为它包含非常重要的功能,新的需求开发必须要依赖于它。此时用外观模式 Facade也是非常合适的。可以为新系统开发一个外观 Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
外观类,它需要了解所有的子系统的方法或属性,进行组合,以备外界调用。
一句话:新模块与简单的外观进行交互,外观与复杂的子系统进行交互