快捷搜索:  汽车  科技

店铺设计的核心是什么?一分钟了解什么是外观模式

店铺设计的核心是什么?一分钟了解什么是外观模式4.例子的代码实现:类似于如下的结构模式:简单的来说门面模式就是对外暴露一个口子,接下来的复杂操作都不对外暴露。3.举个例子:例如小孩上学,小孩需要进学校,上课,下课,午休,放学出学校等一系列动作,我们如果关注他的全过程肯定很麻烦,所有我们可以做一个统一的门面--学校,小孩只要上学,而小孩的上学中间的一些列操作我们可以在学校这里面进行操作。

1.概念:

外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。

2.面对场景

当我们业务开发的时候,往往一个流程下来非常复杂,其中多个功能要一起完成或者失败,这种代码往往很复杂,这时候我们可以使用门面模式。

简单的来说门面模式就是对外暴露一个口子,接下来的复杂操作都不对外暴露。

3.举个例子:

例如小孩上学,小孩需要进学校,上课,下课,午休,放学出学校等一系列动作,我们如果关注他的全过程肯定很麻烦,所有我们可以做一个统一的门面--学校,小孩只要上学,而小孩的上学中间的一些列操作我们可以在学校这里面进行操作。

类似于如下的结构模式:

店铺设计的核心是什么?一分钟了解什么是外观模式(1)

4.例子的代码实现:

一般情况下,我们需要这样描述学生上学这个动作:

// 学校大门 两个动作开门和关门 class Door { public void open() { System.out.println("学校开门"); } public void closs() { System.out.println("学校关门"); } } // 老师上课下课 class Teacher { public void beginClass() { System.out.println("老师上课"); } public void endClass() { System.out.println("老师下课"); } } // 学生上学、下学、学习、做作业 class Student { public void study() { System.out.println("学生学习"); } public void doWork() { System.out.println("学生做作业"); } public void goToSchool() { System.out.println("上学"); } public void leaveSchool() { System.out.println("放学"); } }

以上我们定义一下对象,那么学生上学的具体实现需要一步一步来,代码如下:

public class DoorHandler { public static void main(String[] args) { // 新建对象 Door door = new Door(); Student student = new Student(); Teacher teacher = new Teacher(); // 学校开门,然后学生学习等一系列操作 door.open(); student.goToSchool(); teacher.beginClass(); student.study(); student.doWork(); student.leaveSchool(); teacher.endClass(); student.leaveSchool(); door.closs(); } }

可以看到,简单的逻辑还好,如果复杂的话,这边执行将很复杂,面对这种情况,我们可以使用门面模式,用一个对象统一处理,然后暴露一个口给外界调用:

class School { private Door door; private Student student; private Teacher teacher; public School() { this.door = new Door(); this.student = new Student(); this.teacher = new Teacher(); } public void doSchool() { door.open(); student.goToSchool(); teacher.beginClass(); student.study(); student.doWork(); student.leaveSchool(); teacher.endClass(); student.leaveSchool(); door.closs(); } } public class DoorHandler { public static void main(String[] args) { School school = new School(); // 一步完成所有操作 school.doSchool(); } }

5.总结

门面模式可以很好地处理一些复杂的操作,例如spring源码里面的配置和刷新Web上下文,就用到了门面模式。

class School { private Door door; private Student student; private Teacher teacher; public School() { this.door = new Door(); this.student = new Student(); this.teacher = new Teacher(); } public void doSchool() { door.open(); student.goToSchool(); teacher.beginClass(); student.study(); student.doWork(); student.leaveSchool(); teacher.endClass(); student.leaveSchool(); door.closs(); } } public class DoorHandler { public static void main(String[] args) { School school = new School(); // 一步完成所有操作 school.doSchool(); } }

猜您喜欢: