外观模式

这个是比较好理解的,拿我们的电脑做例子。电脑有cpu,内存,显卡等这些。当电脑开机时,主板、cpu、内存等都要启动。但作为用户并不需要管里面启动顺序之类的,我们只要按下开机键就行了。

public class Facade {
    public static class Board {

        public void start(){
            System.out.println("board start!");
        }
    }
    public static class CPU {

        public void start(){
            System.out.println("cpu start!");
        }
    }

    public static class Memory {

        public void start(){
            System.out.println("memory start!");
        }
    }
    public static class Computer {
        private CPU cpu;
        private Memory memory;
        private Board board;

        public Computer(){
            board = new Board();
            cpu = new CPU();
            memory = new Memory();
        }

        public void start(){
            System.out.println("start the computer!");
            board.start();
            cpu.start();
            memory.start();
            System.out.println("start computer finished!");
        }
    }

    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.start(); //我想关机大家自己也会写了
    }
}
输出:
start the computer!
board startup!
cpu startup!
memory startup!
start computer finished!

很简单吧,但外观模式用的很多。外观模式是种封装,所以有很好的低耦合(改动cpu等不影响computer)。有人说不符合开闭原则,因为开闭原则扩展时不影响以前的。而现在扩展要更改外观类,我想说的是,无论用哪种方式。如果你增加了功能,客户端要用肯定得改客户端代码的。
其实开闭原则也好,高内聚低耦合也罢。都是为了更改代码时影响最小。

最后面向对象的23种设计模式点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值