门面模式(结构型)

定义

提供一个统一的接口,用来访问子系统的一群接口,定义了一个高级接口,让子系统更容易使用

适用场景

  1. 子系统越来越复杂,增加门面模式提供简单接口
  2. 构建多层系统结构,利用门面模式作为每层的入口,简化调用层

门面模式的实例

public class Login {
    private String userName;

    public Login(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void login2page() {
        System.out.println("用户已登录:" + userName);
    }
}

public class Pay {
    private int amount;

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

    public Pay(int amount) {
        this.amount = amount;
    }

    public void pay2super() {
        System.out.println("支付金额:" + amount);
    }
}

public class Shipment {
    private String ShipNo;

    public String getShipNo() {
        return ShipNo;
    }

    public void setShipNo(String shipNo) {
        ShipNo = shipNo;
    }

    public Shipment(String shipNo) {
        ShipNo = shipNo;
    }

    public void ship2user() {
        System.out.println("发货成功:"+ ShipNo);
    }
}

// 门面类
public class PurchaseGoodsFacade {
    private Login login = new Login("ya");
    private Pay pay = new Pay(11);
    private Shipment shipment = new Shipment("666");

    public void purchaseGoods() {

        if(login.getUserName() != null && !login.getUserName().isEmpty()) {
            login.login2page();
            if (String.valueOf(pay.getAmount()) != null) {
                pay.pay2super();
                if (shipment.getShipNo() != null) {
                    shipment.ship2user();
                }
            }
        }
    }

    public static void main(String[] args) {
        PurchaseGoodsFacade facade = new PurchaseGoodsFacade();
        facade.purchaseGoods();
    }
}

应用

  1. jdbcUtil - supportsBatchUpdates
  2. mybatis - configuration- newMeta
  3. tomcat

与其他设计模式区别

  1. 代理模式
    1. 特殊的静态代理
    2. 门面模式重点在于封装
    3. 静态代理在于增强
  2. 单例模式
    1. 一般门面模式会设计成单例模式

优点

  1. 简化调用过程
  2. 减少系统依赖,松散耦合
  3. 更好的划分层次,提高安全性
  4. 最少知道原则

缺点

  1. 子系统扩展子系统行为时可能带来危险
  2. 不符合开闭原则
  3. 某些情况违背单一职责原则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值