设计模式——外观模式

     外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

     简单的说,外观模式就是把复杂的系统的具体操作封装起来,只暴露一个简单的接口,做和众多子系统之间松耦合。

     提到一个设计原则:最少知识原则,只和你的密友谈话。(HeadFirst中的描述)具体的说就是让类和类之间尽量松耦合,类与类之间的依赖降到最低,各司其职。

     迪米特法则:一个软件实体应当尽可能少的与其他实体发声相互作用。

     用一个注册公司的系统来说明问题:

     AIC 工商局
     BQS 质监局
     Bank 银行
     TaxB 税务局

    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public interface AIC  {
    void checkName(); 
}
 
class BJAIC implements AIC {
 
    @Override
    public void checkName() {
        System.out.println("检查名字是否有冲突!");
    }
 
}
 
 
public interface BQS {
    void  orgCodeCertificate();  //办理组织机构代码证
}
 
class BJBQS implements BQS {
 
    @Override
    public void orgCodeCertificate() {
        System.out.println("在北京质检局办理组织机构代码证!");
    }
 
}
 
public interface Bank {
    void  openAccount();  //开户
}
 
 
class BJBank implements Bank {
 
    @Override
    public void openAccount() {
        System.out.println("在北京银行开户!");
    }
 
}
 
public interface TaxB {
    void taxCertificate();  //办理税务登记证
}
 
 
class BJTaxB implements TaxB {
 
    @Override
    public void taxCertificate() {
        System.out.println("在北京税务局办理税务登记证!");
    }
 
}
 
public class RegisterFacade {
    public void register(){
        AIC  a = new BJAIC();
        a.checkName();
        BQS b = new BJBQS();
        b.orgCodeCertificate();
        TaxB  c  = new BJTaxB();
        c.taxCertificate();
        Bank  d = new BJBank();
        d.openAccount();
    }
}
 
public class Client {
    public static void main(String[] args) {
        //使用外观模式之后注册公司就是这么简单!!还有谁!!
        new RegisterFacade().register();
    }
}

 

 

 

    

posted @   Pickle  阅读(673)  评论(0编辑  收藏  举报
编辑推荐:
· 自定义通信协议——实现零拷贝文件传输
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
阅读排行:
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手
点击右上角即可分享
微信分享提示