频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
Java设计模式之结构型外观模式设计讲解
2017-12-27 11:12:19         来源:pinqiang的博客  
收藏   我要投稿

外观模式,在项目开发和实际运用中十分频繁,但是其极易理解。

该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。

1、涉及到3个角色。

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

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

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

2、代码演示:

    a.3个子系统的代码(CPU,Memory,Disk)
        public class CPU 
        {
            public void start()
            {
                System.out.print("cpu is start...");
            }
            public void shutDown()
            {
                System.out.print("CPU is shutDown...");
            }
        }

        public class Disk 
        {
            public void start()
            {
                System.out.print("Disk is start...");
            }
            public void shutDown()
            {
                System.out.print("Disk is shutDown...");
            }
        }

        public class Memory 
        {
            public void start()
            {
                System.out.print("Memory is start...");
            }
            public void shutDown()
            {
                System.out.print("Memory is shutDown...");
            }
        }

    b.门面类Computer
        //核心
        public class Computer
        {
            private CPU cpu;
            private Memory memory;
            private Disk disk;
            public Computer()
            {
                cpu = new CPU();
                memory = new Memory();
                disk = new Disk();
            }
            public void start()
            {
                System.out.print("Computer start begin");
                cpu.start();
                disk.start();
                memory.start();
                System.out.print("Computer start end");
            }

            public void shutDown()
            {
                System.out.print("Computer shutDown begin");
                cpu.shutDown();
                disk.shutDown();
                memory.shutDown();
                System.out.print("Computer shutDown end...");
            }
        }

    c.客户端类Cilent
        public class Cilent {
            public static void main(String[] args) 
            {
                Computer computer = new Computer();
                computer.start();
                System.out.print("=================");
                computer.shutDown();
            }
        }
从上面的实例来看,有了这个Facade类,也就是Computer类,用户就不用亲自去调用子系统中的Disk,Memory、CPU类了,
不需要知道系统内部的实现细节,甚至都不用知道系统内部的构成。客户端只需要跟Facade交互就可以了

3、优点

松散耦合

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

简单易用

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

更好的划分访问层次

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

点击复制链接 与好友分享!回本站首页
上一篇:Java设计模式之结构型代理模式详解
下一篇:JavaWeb分页效果实现
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站