设计模式:外观模式(门面模式)

  外观模式也叫门面模式, 它为子系统提供统一入口,封装系统复杂性。如同医院看病,病人需要与挂号,门诊,划价,化验,收费,取药等部门打交道

如同一个子系统客户端和另一个子系统各个类打交道一样,相互耦合处理复杂,如果引入门面模式,在医院增加一个接待员,由接待员复制与上面各个

部门打交道,那么对于病人这个客户端来说就容易很多。

门面模式主要就两个角色。

门面角色:客户端调用该角色方法。该角色包好各子系统的功能。

子系统角色:完成子系統各功能

 

例子:模拟注册公司流程

  1:未使用门面模式时,流程图如下

 

  2.使用了门面模式后(增加门面对象)

 interface GongShang {
     boolean checkName();
}

/**
 * 模擬工商局
 */
public class BeijinGongShang implements GongShang{
    @Override
    public boolean checkName() {
        System.out.println("北京工商局检查");
        return false;
    }
}

  

interface ShuiWu {
    boolean checkCertificate();
}

/**
 * 模拟税务局
 */
public class BeijinShuiWu implements ShuiWu {
    @Override
    public boolean checkCertificate() {
        System.out.println("北京稅務局");
        return false;
    }
}

  

interface Zhijian{
    boolean checkType();
}

public class BeijinZhijian implements Zhijian{
    @Override
    public boolean checkType() {
        System.out.println("北京質監局");
        return false;
    }
}

  

/**
 * 办理注册公司流程的门面对象
 *
 */
public class RegisterFacade {

	public void register(){
		GongShang  a = new BeijinGongShang();
		a.checkName();
		Zhijian b = new BeijinZhijian();
		b.checkType();
		ShuiWu  c  = new BeijinShuiWu();
		c.checkCertificate();
	}


}

  

public class Client {
    public static void main(String[] args) {
        //使用门面模式只需要调用门面角色的方法
        new RegisterFacade().register();
    }
}

  从上面的实例来看,有了这个門面类,也就是RegeisterFacader类,用户就不用亲自去调用子系统中类了,不需要知道系统内部的实现细节,甚至都不用知道系统内部的构成。

客户端只需要跟门面类交互就可以了。

 

转载于:https://www.cnblogs.com/gcm688/p/10241497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值