在电脑主机(MainFrame)中只需要按下主机的开机按钮(on()),即可调用其它硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(Hard
1、UML类图
2、源码
package com.zheng;
public class MainFrame {
private Memory memory=new Memory(); //关联关系建立联系
private Cpu cpu=new Cpu();
private HardDisk harddisk=new HardDisk();
private Os os=new Os();
public void fun() {
memory.display();
cpu.display();
harddisk.display();
os.display();
System.out.println("开机正常");
}
}
package com.zheng;
public class Memory {
public void display() {
System.out.println("1、内存正常");
}
}
package com.zheng;
public class Cpu {
public void display() {
System.out.println("2、cpu运行正常");
}
}
package com.zheng;
public class HardDisk {
public void display() {
System.out.println("3、硬盘读取正常");
}
}
package com.zheng;
public class Os {
public void display() {
System.out.println("4、操作系统载入正常");
}
}
package com.zheng;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
// TODO 自动生成的方法存根
while (true) {
MainFrame f = new MainFrame();
Scanner scan = new Scanner(System.in);
System.out.println("请输入ON进行开机:");
String str = scan.nextLine();
if (str.equals("ON")) {
f.fun();
} else {
System.out.println("输入的信息有误!!!请重新输入");
}
}
}
}
3、优缺点
优点:1、实现了子系统和客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观模式就可以。2、一个子系统的修改对其他子系统没有任何影响。3、对客户端屏蔽了子系统的组件,减少了客户端所需处理的对象数目。
缺点:1、如果设计不当、增加新的子系统可能需要修改外观类的源代码,违反了开闭原则。2、不能很好的限制客户端直接使用子系统类。