栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

(10)GoF设计模式之外观模式及其实例

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(10)GoF设计模式之外观模式及其实例

定义:

        是一种使用频率非常高的设计模式, 它通过引入一个外观角色来简化客户端和子系统之间的操作,为复杂的子系统调用提供一个统一的入口,使子系统与客户端的耦合度降低,且客户端调用非常方便。

优点:

        (1)它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易

        (2)它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观类即可

        (2) 一个子系统的修改对其他子系统没有任何影响,而且子系统的内部变化也不会影响到外观对象

缺点:

        (1)不能很好地限制客户端直接使用子系统类,如果对客户端访问子 系统类做太多的限制则减少了可变性和灵活性

        (2)如果设计不当,增加新的子系统可能需要修改外观类的源代码, 违背了开闭原则

适用范围:

        (1)要为访问一系列复杂的子系统提供一个简单入口

        (2)客户端程序与多个子系统之间存在很大的依赖性

        (3)在层次化结构中,可以使用外观模式定义系统中每一层的入口, 层与层之间不直接产生联系,而是通过外观类建立联系,降低层之间的耦合度

实例:

        在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘的(HardDisk)的读取(read())、操作系统(OS)的载入(load())等,如果某一过程发生错误则计算机启动失败。使用外观模式模拟该过程.

实例uml:

实例目录:

实例代码:

CPU.java

package face;

public class CPU {
    public void run(){
        System.out.println("CPU运行");
    }

}

HardDisk.java

package face;

public class HardDisk {
    public void read(){
        System.out.println("硬盘读取");
    }
}

MainFrame.java.java

package face;

public class Mainframe {
    private CPU cpu=new CPU();//空对象只能调用static方法
    private HardDisk hardDisk=new HardDisk();
    private Memory memory=new Memory();
    private OS os=new OS();
    public void on(){
        cpu.run();
        hardDisk.read();
        memory.check();
        os.load();
        System.out.println("计算机启动成功!");

    }
}

Memory.java

package face;

public class Memory {
   public void check(){
       System.out.println("内存自检");
   }

}

OS.java

package face;

public class OS {
    public void load(){
        System.out.println("操作系统载入");
    }

}

Client.java

package face;

public class Client {
    public static void main(String[] args) {
        Mainframe mainframe=new Mainframe();
        mainframe.on();
        System.out.println("软件1928 2019006175");
    }
}

运行结果截图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号