对于外观模式书中讲的简单宽泛不便于理解,所以找了些网上的资料作为参考(http://zz563143188.iteye.com/blog/1847029)。结合起来看可以把外观模式解释为下面这样:
外观模式主要作用于类与类之间的关系,作用是解耦,解除类与类之间的依赖。也可以用书中的话说“根据关注点将代码分解为不通的类,就可以提取一个类,它的主要职责是为子系统提供简便的访问方式,从而完成对系统的重构。”简单的说就是讲一段代码根据不同的功能模块化,并实现一个外观类,它的功能就是整合这些模块,为开发者提供一个简易的使用接口。同时这个外观类也使各个模块之间实现解耦,是他们不会互相影响。
网上的例子比书中的更易于理解:这是一个电脑启动过程的例子
[java]
view plain
copy
- public class CPU {
- public void startup(){
- System.out.println("cpu startup!");
- }
- public void shutdown(){
- System.out.println("cpu shutdown!");
- }
- }
[java]
view plain
copy
- public class Memory {
- public void startup(){
- System.out.println("memory startup!");
- }
- public void shutdown(){
- System.out.println("memory shutdown!");
- }
- }
[java]
view plain
copy
- public class Disk {
- public void startup(){
- System.out.println("disk startup!");
- }
- public void shutdown(){
- System.out.println("disk shutdown!");
- }
- }
[java]
view plain
copy
- public class Computer {
- private CPU cpu;
- private Memory memory;
- private Disk disk;
- public Computer(){
- cpu = new CPU();
- memory = new Memory();
- disk = new Disk();
- }
- public void startup(){
- System.out.println("start the computer!");
- cpu.startup();
- memory.startup();
- disk.startup();
- System.out.println("start computer finished!");
- }
- public void shutdown(){
- System.out.println("begin to close the computer!");
- cpu.shutdown();
- memory.shutdown();
- disk.shutdown();
- System.out.println("computer closed!");
- }
- }
User类如下:
[java]
view plain
copy
- public class User {
- public static void main(String[] args) {
- Computer computer = new Computer();
- computer.startup();
- computer.shutdown();
- }
- }