一、 问题描述
客户购买和赎回基金,基金再购买和卖出多种股票或债券。过程相当于客户购买和赎回多种股票和债券,但客户并没有直接接触股票或债券。使用外观模式编写程序实现上述内容。
二、 完成如下题目要求
-
画出静态图
-
写出采用该设计模式的好处
客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟外观交互就可以。
通过合理使用Facade,可以帮助我们更好的划分访问的层次
外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。
- 编写代码
package Fund1;
/**
* 客户端
* @author Sakura
*
*/
public class Client {
public static void main(String[] args) {
Fund fund=new Fund();
fund.buy();
System.out.println("======================");
fund.sell();
}
}
package Fund1;
public class Fund {
Stock1 stock1;
Stock2 stock2;
NationalDebt1 nationalDebt1;
NationalDebt2 nationalDebt2;
public Fund() {
stock1 =new Stock1();
stock2 =new Stock2();
nationalDebt1=new NationalDebt1();
nationalDebt2=new NationalDebt2();
}
public void buy() {
stock1.buy();
stock2.buy();
nationalDebt1.buy();
nationalDebt2.buy();
}
public void sell() {
stock1.sell();
stock2.sell();
nationalDebt1.sell();
nationalDebt2.sell();
}
}
package Fund1;
public class NationalDebt1 {
public void buy() {
System.out.println("国债1买入");
}
public void sell() {
System.out.println("国债1赎回");
}
}
package Fund1;
public class NationalDebt2 {
public void buy() {
System.out.println("国债2买入");
}
public void sell() {
System.out.println("国债2赎回");
}
}
package Fund1;
//股票1
public class Stock1 {
public void buy() {
System.out.println("股票1买入");
}
public void sell() {
System.out.println("股票1赎回");
}
}
package Fund1;
//股票2
public class Stock2 {
public void buy() {
System.out.println("股票2买入");
}
public void sell() {
System.out.println("股票2赎回");
}
}