前言
外观模式(Facade Pattern)是为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口
,这个接口使得这一子系统更加容易使用。
样例说明
为了说明外观模式,我们以一个小例子来说明。
现在很多人都在炒股,这些人根据自己的判断买股票、卖股票。个体户的风险比较大,所以会有些基金会将这些个体户的投资集中起来,集中的购买股票和售卖股票,由于基金会买的种类和数量足够多,这样血亏的风险就会小很多。当然在这里,外观模式的好处并不在此。
有两种模式,人
-股票
模式和人
-基金会
-股票
的模式
人
-股票
模式
在这种模式下,人直接操作各种股票的买和卖
这里我们以三个股票类为例。
先创建三个股票类,代码分别1,2,3
shares
中文为股票的意思,这里我们就以shares来作为接口名
public interface shares {
void sell();
void buy();
}
股票有卖和买两种行为,所以接口中有卖和买两种方法
股票类1
public class shares1 implements shares{
@Override
public void sell() {
System.out.println("股票代码为1的股票被卖掉");
}
@Override
public void buy() {
System.out.println("买进股票代码为1的股票");
}
}
股票类2
public class shares2 implements shares{
@Override
public void sell() {
System.out.println("股票代码为2的股票被卖掉");
}
@Override
public void buy() {
System.out.println("买进股票代码为2的股票");
}
}
股票类3
扫描二维码关注公众号,回复:
8941481 查看本文章
public class shares3 implements shares{
@Override
public void sell() {
System.out.println("股票代码为3的股票被卖掉");
}
@Override
public void buy() {
System.out.println("买进股票代码为3的股票");
}
}
人操作股票
public class person {
public static void main(String[] args) {
shares1 s1 = new shares1();
shares2 s2 = new shares2();
shares3 s3 = new shares3();
s1.buy();
s2.buy();
s3.buy();
s1.sell();
s2.sell();
s3.sell();
}
}
//运行结果
//买进股票代码为1的股票
//买进股票代码为2的股票
//买进股票代码为3的股票
//股票代码为1的股票被卖掉
//股票代码为2的股票被卖掉
//股票代码为3的股票被卖掉
这样做的结果是,人需要知道与三种股票有关的所有方法和属性。
人
-基金会
-股票
模式
在这种模式下,客户并不直接与股票打交道。
新增基金会类
public class foundation {
shares1 s1 = null;
shares2 s2 = null;
shares3 s3 = null;
public foundation() {
s1 = new shares1();
s2 = new shares2();
s3 = new shares3();
}
public void buy()
{
s1.buy();
s2.buy();
s3.buy();
}
public void sell()
{
s1.sell();
s2.sell();
s3.sell();
}
}
那么在客户端中,人只需要new基金会类就可以
public class person {
public static void main(String[] args) {
foundation fd = new foundation();
fd.buy();
fd.sell();
}
}
//运行结果
//买进股票代码为1的股票
//买进股票代码为2的股票
//买进股票代码为3的股票
//股票代码为1的股票被卖掉
//股票代码为2的股票被卖掉
//股票代码为3的股票被卖掉
总结
在这个例子中,人如果要买哪一种的股票,就进行操作。如果人三种股票都想买,那就需要买三次。而在加上基金会类之后,人如果想买股票,只需要调用基金会类。
在这里,基金会类就是外观类,它需要知道所有子系统的属性和方法。
而有了基金会类的存在,人在客户端无需知道任何子系统的属性和方法。
参考
《大话设计模式》