java_facade

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原则:

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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值