我们的主人公大维德是江苏泰兴中部一个小县城的一个暴发户的儿子,他不学无术,仗着家里开了一个厂,有着3个宅基地,好吃懒做,不学无术。虽然他还不到35岁,就已经秃顶
假如没有门面模式,那么大威德去happy,就要分下面几步
1.去前台校验会员卡
2.找个喜欢的人
3.去楼上开个房间
解决这种不便的方式就是引入门面模式。
声音甜美的 接待员 帮他把这些都一条龙办好
插入正题,上代码
1.定义各个步骤,比如vip会员卡查验、选人、开房
/**
* 子系统角色中的类:FuWuTai.java、LaoBao.java、Hotel
*/
class FuWuTai {
//服务台检查VIP会员卡
public void checkVip(){
System.out.println("服务台检查VIP会员卡");
}
}
/**
* 选人
*/
class LaoBao {
//根据你的需要给你推荐
public void getMM(String require){
if("大长腿".equals(require)) {
System.out.println("眉梢眼角藏秀气,声音笑貌露温柔!");
}
if("清纯".equals(require)) {
System.out.println("芙蓉不及美人妆,水殿风来珠翠香!");
}
}
}
/**
* 宾馆开一个房间
*/
class Hotel {
//示例方法
public void kaiFang(){
System.out.println("开一个大床房间!");
}
}
各个子系统的步骤都有了,接下来就是 提供一个高层次的接口,使得子系统更易于使用:女接待员
/**
* 门面角色类:会suo接待员
*/
public class YiHongYuanFacade {
//示例方法,满足大威德找快乐的功能
public void findHappy(){
FuWuTai a = new FuWuTai();
a.checkVip();
LaoBao b = new LaoBao();
b.getMM("大长腿");
Hotel c = new Hotel();
c.kaiFang();
}
}
客户端:大威德出场
public class David01 {
public static void main(String[] args) {
YiHongYuanFacade facade = new YiHongYuanFacade();
facade.findHappy();
}
}
总结:
门面模式降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。
门面设计模式(Facade Design Pattern)是结构设计模式中的一种,门面模式的作用是为了帮助客户端更容易地与系统交互。
优点:
减少系统的相互依赖
提高系统灵活性:不管子系统内部如何变化,只要不影响到门面对象,就没有关系
提高系统安全性:只需要访问门面方法,内部方法不允许客户端访问
门面模式的缺点是:
不符合开闭原则,对修改关闭,对扩展开放