工商局超类型及实现类:

package facade_mode;

/**
 * 工商局类型
 */
public interface GongShangJu {

    /**
     * 检查名字
     */
    public void checkName();
    
}


/**
 * 海淀区工商局
 */
class HaiDianQuGongShangJu implements GongShangJu {

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

 

质检局超类型及实现类:

package facade_mode;

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


/**
 * 海淀区质检局
 */
class HaiDianQuZhiJianJu implements ZhiJianJu {

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

 

税务局超类型及实现类:

package facade_mode;

/**
 * 税务局类型
 */
public interface ShuiWuJu {

    /**
     * 办理税务登记证
     */
    void taxCertificate();
    
}


/**
 * 海淀区税务局
 */
class HaiDianQuShuiWuJu implements ShuiWuJu {

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

 

银行超类型及实现类:

package facade_mode;

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


/**
 * 中国工商银行
 */
class ZhongGuoGongShangYinHang implements YinHang {

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

 

门面对象:

package facade_mode;

/**
 * 办理注册公司流程的门面对象
 * 外观模式(又称门面模式)中的核心对象
 * 开发中用的非常多, 客户不必一个个去调用. 就是封装, 只调用一次, 由门面对象去处理关系
 */
public class RegisterFacade {
    
    
    /**
     * 封装了注册流程
     */
    public void register(){
        //注册公司办理流程为: 跑工商局 -> 质检局 -> 税务局 -> 银行
        GongShangJu a = new HaiDianQuGongShangJu();
        a.checkName();
        
        ZhiJianJu b = new HaiDianQuZhiJianJu();
        b.orgCodeCertificate();
        
        ShuiWuJu c = new HaiDianQuShuiWuJu();
        c.taxCertificate();
        
        YinHang d = new ZhongGuoGongShangYinHang();
        d.openAccount();
    }

}

 

测试类:

package facade_mode;

public class Client {

    public static void main(String[] args) {
        
        //注册公司办理流程为: 跑工商局 -> 质检局 -> 税务局 -> 银行
//        GongShangJu a = new HaiDianQuGongShangJu();
//        a.checkName();
//        
//        ZhiJianJu b = new HaiDianQuZhiJianJu();
//        b.orgCodeCertificate();
//        
//        ShuiWuJu c = new HaiDianQuShuiWuJu();
//        c.taxCertificate();
//        
//        YinHang d = new ZhongGuoGongShangYinHang();
//        d.openAccount();
        
        
        new RegisterFacade().register();//创建门面对象(当做工具类吧), 由此对象去完成注册, 客户端不必关注注册的细节
    }
    
}

 

执行结果:

检查名字是否有冲突!
在海淀区质检局办理组织机构代码证!
在海淀区税务局办理税务登记证!
在中国工商银行开户!

 

 

谢谢声明出处!