设计模式—门面模式

门面模式(Facade)是结构型设计模式,它的作用是为客户端提供一个简单易用的接口,统一执行一些功能;当然,客户端也可以不使用它,自己去对这些功能进行细致的操作与控制。

比如我们现在的手机照相,通常有一个自动(Auto)模式,适合于不太会设置光圈对比度之类东西的用户使用,但是它的手动模式则适合高级用户使用,用户可以自己细致操作每一个步骤,代价是使用更繁琐。这里的自动模式就是一个门面。

又比如在公司里普通职工需要自己完成买食物,日用品等行为;但是老板会有秘书代替他完成,老板不必自己亲自去做每一件事情,这里的秘书就是一个门面。

如下为代码示例:

package DesignPattern;

public class Facade {
    public static void main(String[] args) {
        //staff
        System.out.println("---staff---");
        new Restaurant().buyFood();
        new Hotel().checkIn();
        new Supermarket().buyGoods();
        //boss
        System.out.println("---boss---");
        new Secretary().operation();
    }
}
class Secretary {
    Hotel hotel = new Hotel();
    Restaurant res = new Restaurant();
    Supermarket sup = new Supermarket();
    void operation() {
        hotel.checkIn();
        res.buyFood();
        sup.buyGoods();
    }
}
class Hotel {
    void checkIn() {
        System.out.println("Check in ");
    }
}
class Restaurant {
    void buyFood() {
        System.out.println("Buy food ");
    }
}
class Supermarket {
    void buyGoods() {
        System.out.println("Buy goods ");
    }
}
/*
output
---staff---
Buy food 
Check in 
Buy goods 
---boss---
Check in 
Buy food 
Buy goods 
*/

门面模式的缺点就是不符合开闭原则,如果有了新的要做的事情,就得修改Secretary中的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值