设计模式之门面模式
发布时间:2020-12-13 22:48:45 所属栏目:百科 来源:网络整理
导读:门面模式又是一“依赖注入”的例子,和前面讲的策略模式和代理模式有共通之处。 直接举个例子吧。用户早上起床这个过程,由睁眼、起身、下床三个有序的动作组成。 因为有序,所以,如果把这三个动作的调用都交给用户,就可能出现无序操作(总有些SB的),进
门面模式又是一“依赖注入”的例子,和前面讲的策略模式和代理模式有共通之处。 直接举个例子吧。用户早上起床这个过程,由睁眼、起身、下床三个有序的动作组成。 因为有序,所以,如果把这三个动作的调用都交给用户,就可能出现无序操作(总有些SB的),进而导致逻辑错误。为了避免这种情况,于是,门面模式将这三个有序的动作都封装到一个操作中,并将这个操作的调用公开,然后,用户调用这个操作就可安全有序的完成那三个动作了。说白了,就是内部操作隐藏,做个门面给别人看。 先定义一个借口: package _7th_Facade; public interface IMorning { void zhengyan();//睁眼 void qishen();//起身 void xiachuan();//下床 } 然后实现接口: package _7th_Facade; public class MonringOperation implements IMorning { @Override public void qishen() { System.out.println("我起身"); } @Override public void xiachuan() { System.out.println("我下床"); } @Override public void zhengyan() { System.out.println("我睁开眼"); } } 门面类(含封装的操作): package _7th_Facade; public class Facade { IMorning human = null; public Facade(IMorning human) {//依赖注入:因为需要调用睁眼等动作,所以需要IMorning对象,于是通过构造函数传进来。 this.human = human; } public void getup(){//对于getup起床过程,下面三个动作是有先后顺序的,所以由getup方法按时间顺序封装。 human.zhengyan();//用户调用时就不用操心具体操作,直接调用getup方法即可有序完三个动作 human.qishen(); human.xiachuan(); } } 调用测试: public static void main(String[] args) { Facade facade = new Facade(new MonringOperation()); facade.getup(); }这个模式比较简单,没啥好多说。记住核心——依赖注入对象,有序动作封装。想更深入了解可以结合前面的策略模式和代理模式着来看。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |