- N +

设计模式之外观模式

设计模式之外观模式原标题:设计模式之外观模式

导读:

什么是外观模式? 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的...

文章目录 [+]

什么是外观模式

 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。

外观模式意图

外观模式主要是为了为一组接口提供一个一致的界面。从而使得复杂的子系统与用户端分离解耦。

有点类似家庭常用的一键开关,只要按一个键,台灯卧室客厅的灯都亮了。虽然他们各有各自的开关,但是对外用一个来控制。

外观模式应用场景

 1 为复杂系统 提供简单的接口。

 2 客户程序与抽象类的实现部分分离。

 3 构建层次系统时,用作入口。

外观模式角色

这个模式中,设计到3个角色。

  1).门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。

  2).子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。

  3).客户角色:通过调用Facede来完成要实现的功能。

外观模式优点

- 松散耦合

  使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;

- 简单易用

  客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。

- 更好的划分访问层次

  有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。

外观模式-代码讲解

每个电脑都有CPU、Memory、Disk。在电脑开启和关闭的时候,相应的部件也会开启和关闭,所以,使用了该外观模式后,会使用户和部件之间解耦。

/**
 * 
 * cpu子系统类
 *
 */
class CPU {
    
    
    
    public void start() {
        System.out.println("cpu is start...");
    }

    public void shutDown() {
        System.out.println("CPU is shutDown...");
    }
    
}

/**
 * 
 * Disk子系统类
 *
 */
class Disk {
    
    public void start() {
        System.out.println("Disk is start...");
    }

    public void shutDown() {
        System.out.println("Disk is shutDown...");
    }
    
}

/**
 * 
 * Memory子系统类
 *
 */
class Memory {
    
    public void start() {
        System.out.println("Memory is start...");
    }

    public void shutDown() {
        System.out.println("Memory is shutDown...");
    }
    
}

门面类:

//门面类(核心)
public class Computer {
    
    
    private Disk disk;
    
    private CPU  cpu;
    
    private Memory memory;
    
    
    Computer(Disk disk,CPU  cpu,Memory memory){
        
        this.disk=disk;
        
        this.cpu=cpu;
        
        this.memory=memory;
    
    }
    
    public void start() {
        
        disk.start();
        
        cpu.start();
        
        memory.start();
        
    }

    public void shutDown() {
        
        disk.shutDown();
        
        cpu.shutDown();
        
        memory.shutDown();
        
    }
    

}


本文标题:设计模式之外观模式
本文链接:http://kyjszj.com/wdzl/24.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共895人参与)参与讨论

    还没有评论,来说两句吧...