微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设计模式之门面模式

门面模式又是一“依赖注入”的例子,和前面讲的策略模式和代理模式有共通之处。

直接举个例子吧。用户早上起床这个过程,由睁眼、起身、下床三个有序的动作组成。

因为有序,所以,如果把这三个动作的调用都交给用户,就可能出现无序操作(总有些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();
	}
这个模式比较简单,没啥好多说。记住核心——依赖注入对象,有序动作封装。想更深入了解可以结合前面的策略模式和代理模式着来看。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐