外观模式

首先介绍一下迪米特法则(最少知识原则):
一个软件实体应当尽可能少的与其他实体发送相互作用。
外观模式就是迪米特法则的体现,它为系统提供统一的入口。封装子系统的复杂性,便于客户端调用。

用代码来说明:
1.如果有人需要开店,那么他就需要到工商局,税务局,银行,质监局办理各种手续,创建上面的各种类:

public interface 工商局  {
    void checkName();  //核名
}

class 海淀区工商局 implements 工商局 {

    @Override
    public void checkName() {
        System.out.println("检查名字是否有冲突!");
    }

}


public interface 税务局 {
    void taxCertificate();  //办理税务登记证
}


class 海淀税务局 implements 税务局 {

    @Override
    public void taxCertificate() {
        System.out.println("在海淀税务局办理税务登记证!");
    }

}


public interface 银行 {
    void  openAccount();  //开户
}


class 中国工商银行 implements 银行 {

    @Override
    public void openAccount() {
        System.out.println("在中国工商银行开户!");
    }

}


public interface 质检局 {
    void  orgCodeCertificate();  //办理组织机构代码证
}



class 海淀质检局 implements 质检局 {

    @Override
    public void orgCodeCertificate() {
        System.out.println("在海淀区质检局办理组织机构代码证!");
    }

}

2.如果在客户端直接调用各个类,那么就会使得客户端与系统之间的耦合度太高,为了降低耦合度,可以实现一个统一的facade供客户端调用:

public class RegisterFacade {
    public void register(){
        工商局  a = new 海淀区工商局();
        a.checkName();
        质检局 b = new 海淀质检局();
        b.orgCodeCertificate();
        税务局  c  = new 海淀税务局();
        c.taxCertificate();
        银行  d = new 中国工商银行();
        d.openAccount();
    }
}

3.最后,客户端调用代码如下:

public class Client1 {
    public static void main(String[] args) {
    //不使用外观模式的调用
//      工商局  a = new 海淀区工商局();
//      a.checkName();
//      质检局 b = new 海淀质检局();
//      b.orgCodeCertificate();
//      税务局  c  = new 海淀税务局();
//      c.taxCertificate();
//      银行  d = new 中国工商银行();
//      d.openAccount();

        //使用外观模式
        new RegisterFacade().register();

    }
}

外观模式在开发中的应用:
JDBC封装后commons提供的DBUtils类;
Hibernate提供的工具类;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值