外观模式的简单理解
2013-04-27 21:44
218 查看
Facade 外观模式
面向对象的三大特性之一:封装,如果说类是对属性及方法的封装的话,那么 Facade 则是对模块的封装。
提起外观,并不是指的通常意义上的图形界面GUI,而是指的对象的接口。比如,类中的 public 方法,则是该类的外观,模块中对外的接口,则是该模块的外观。
为了设计的灵活,我们通常将一个模块的实现分为多个子模块(重构中已有讲解),每个子模块又可以分为多个小小模块,使用时,我们直接分别调用相应的模块即可。但这也出现了一些问题,每次都要重复的调用相应的子模块,造成了代码的重复,此时我们可以将完成某些功能的子模块封装起来,组成一个外观类,使用时我们直接调用该外观类即可。
外观模式的本质: 封装交互,简化调用
外观模式的结构
如下代码:
对模块的调用进行封装
调用过程
面向对象的三大特性之一:封装,如果说类是对属性及方法的封装的话,那么 Facade 则是对模块的封装。
提起外观,并不是指的通常意义上的图形界面GUI,而是指的对象的接口。比如,类中的 public 方法,则是该类的外观,模块中对外的接口,则是该模块的外观。
为了设计的灵活,我们通常将一个模块的实现分为多个子模块(重构中已有讲解),每个子模块又可以分为多个小小模块,使用时,我们直接分别调用相应的模块即可。但这也出现了一些问题,每次都要重复的调用相应的子模块,造成了代码的重复,此时我们可以将完成某些功能的子模块封装起来,组成一个外观类,使用时我们直接调用该外观类即可。
外观模式的本质: 封装交互,简化调用
外观模式的结构
如下代码:
// 模块A public interface IModelA { public void testA(); } public class ModelAImpl implements IModelA { @Override public void testA() { System.out.println("call Model A..."); } } // 模块B public interface IModelB { public void testB(); } public class ModelBImpl implements IModelB { @Override public void testB() { System.out.println("call Model B..."); } } // 模块C public interface IModelC { public void testC(); } public class ModelCImpl implements IModelC { @Override public void testC() { System.out.println("call Model C..."); } }
对模块的调用进行封装
// 外观类 public class Facade { private Facade(){}; public static void callModel() { IModelA modelA = new ModelAImpl(); modelA.testA(); IModelB modelB = new ModelBImpl(); modelB.testB(); IModelC modelC = new ModelCImpl(); modelC.testC(); } } // 调用 public class Main { public static void main(String[] args) { Facade.callModel(); } }
调用过程
相关文章推荐
- 简单理解常用设计模式(八)外观模式
- 简单理解设计模式之外观模式
- 外观模式的简单理解
- Java 设计模式_外观设计(简单了解)
- 从最简单的HelloWorld理解MVP模式
- 单例模式 理解,简单通透
- OSI七层模式简单通俗理解
- 简单理解单例模式写法(第一篇)
- socket与JAVA设计模式(简单理解)
- 代理模式 简单理解
- 简单理解常用设计模式(五)代理模式
- 我理解中的简单工厂模式
- 用最简单的例子理解装饰器模式(Decorator Pattern)
- 简单理解虚拟机的三种网络适配模式
- 设计模式简单理解
- 设计模式理解(九)结构型——外观(Facade)
- OSI七层模式简单通俗理解
- 对工厂模式的简单理解
- 简单理解常用设计模式(六)工厂模式
- 简单理解常用设计模式(七)模板方法模式