java_facade

来源:互联网 发布:淘宝手表外贸店推荐 编辑:程序博客网 时间:2024/06/04 17:54

introduction:

外观模式:
提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
外观没有”封装“子系统的类,外观只是提供简化的接口。客户如果觉得有必要依然可以直接使用子系统的类。
外观模式一个很好的特征:提供简化的接口的同时,依然将系统完整的功能暴露出来,以供需要的人使用。

demo:

description:

以用户操作一台计算机为例,用户可能不了解计算机内部错综复杂的结构,但是用户可以操作它,这是因为用户使用了操作系统这个接口,由操作系统来调用错综复杂的结构。

模拟从电脑中读写数据

Cpu.java

public class Cpu {        public void useCpu(){        System.out.println("使用cpu");    }    }

Disc.java

public class Disc {        public void useDisc(){        System.out.println("使用硬盘");    }    }

IO.java

public class IO {        public void i(){        System.out.println("读取数据");    }        public void o(){        System.out.println("读出数据");    }}

Memory.java

public class Memory {       public void useMemory(){        System.out.println("使用内存");    }}

Computer.java

public class Computer {    private Cpu cpu;    private Disc disc;    private IO io;    private Memory memory;       public Computer(Cpu cpu, Disc disc, IO io, Memory memroy) {        this.cpu = cpu;        this.disc = disc;        this.io = io;        this.memory = memroy;    }        public void getData(){        cpu.useCpu();        io.o();        disc.useDisc();    }        public void setData(){        cpu.useCpu();        io.i();        memory.useMemory();        io.i();        disc.useDisc();    }}

Test.java

public class Test {    public static void main(String[] args) {        Computer computer = new Computer(                new Cpu(),                new Disc(),                new IO(),                new Memory()                );        System.out.println("读数据");        computer.getData();        System.out.println("\n写数据");        computer.setData();    }}

以上实例简单描述了外观模式的含义。


在外观模式中使用了一个OO原则:

最少知识原则:只和你的密友谈话
不调用从另一个调用中返回对象的方法,这样做,相当于向另一个对象的子部分发出请求,而本原则要求我们直接对该对象发出请求,
这样一来我们就不需要认识该对象的组件了(让朋友圈子维持在最小状态)。
最少知识原则减少了对象之间的依赖,导致复杂度和开发时间的增加,并降低运行时的性能。


适配器模式和外观模式的区别:
适配器模式的意图是,改变接口符合客户的期望
外观模式的意图是,提供子系统的一个简化接口


原创粉丝点击