外观模式

        定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

        外观模式中有一个Facade和多个模块。

        Facade:定义子系统的多个模块对外的高层接口,通常需要调用内部多个模块,从而把客户的请求代理给适当的子系统对象。

        模块:接受Facade对象的委派,真正实现功能,各个模块之间可能有交互。


/**
* A模块的接口
*/
public interface AModuleApi {
        public void testA();
}


/**
* A模块的实现
*/
public class AModuleImpl implements AModuleApi {
        public void testA() {
                System.out.println("execute module a");
        }
}



/**
* B模块的接口
*/
public interface BModuleApi {
        public void testB();
}


/**
* B模块的实现
*/
public class BModuleImpl implements BModuleApi {
        public void testB() {
                 System.out.println("execute module b");
        }
}

/**
* 外观对象
*/
public class Facade {
        public void test() {
                AModuleApi a = new AModuleImpl();
                a.testA();
 
                BModuleApi b = new BModuleImpl();
                b.testB();
        }
}

/**
* 客户端
*/
public class Client {
        public static void main(String[] args) {
                new Facade().test();
        }
}


        可以将外观对象写成接口:

/**
* 外观接口,可以定义多个接口
*/
public interface FacadeApi {
       
        public void test1();

        public void test2();

        public void test3();
}

/**
* 外观实现
*/
public class FacadeImpl implements FacadeApi {

        public void test1() {
                AModuleApi a = new AModuleImpl();
                a.testA();
        }

        public void test2() {
                BModuleApi b = new BModuleImpl();
                b.testB();
        }

        public void test3() {
                AModuleApi a = new AModuleImpl();
                a.testA();

                BModuleApi b = new BModuleImpl();
                b.testB();
        }
}

        通过接口实现的外观对象可以选择性的对外暴露接口。


《研磨设计模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值