2024年1月23日发(作者:)

外观模式

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

MainFrame----memorycpudiskos: Memory: CPU: HardDisk: OS+on (): void+off (): void0..10..10..10..*HardDisk+read (): void+off (): void0..10..*Memory+check (): void+off (): voidCPU0..*0..*OS+load (): void+off (): void+run (): void+off (): void

package FacadePattern;

class Mainframe {

private Memory memory;

private CPU cpu;

private HardDisk disk;

private OS os;

public Mainframe()

{

}

public void on()

{

}

Memory+check (): void+off (): void---- memory=new Memory() ;

cpu=new CPU() ;

disk=new HardDisk() ;

os=new OS() ;

MainFramememorycpudiskos: Memory: CPU: HardDisk: OS ();

();

();

();

0..*CPU+on (): void+off (): void0..10..10..10..*HardDisk+read (): void+off (): void0..10..*0..*OS+load (): void+off (): void+run (): void+off (): void

}

public void off()

{

();

();

();

();

}

class Memory

{

}

class CPU

{

}

class HardDisk

{

public void read()

{

}

public void off()

n("HardDisk reading!");

public void run()

{

}

public void off()

{

}

n("CPU off!");

n("CPU running!");

public void check()

{

n( "Memory checking!");

}

public void off()

{

n("Memory off!");

}

}

{

}

n("HardDisk off!");

class OS

{

}

public class ComputerFacadeClient

{

}

public static void main(String args[])

{

}

Mainframe mainframe=new Mainframe();

();

n("-----------------------");

();

public void load()

{

}

public void off()

{

}

Memory+check (): void+off (): n("OS loading!");

----MainFramememorycpudiskos: Memory: CPU: HardDisk: OS+on (): void+off (): void0..10..10..10..*HardDisk+read (): void+off (): ("OS off!");

0..*CPU0..*0..*OS+load (): void+off (): void+run (): void+off (): void

运行结果:

代理模式

应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片来表示(Picture),通过调用快捷方式的run()方法将调用应用软件(Application)的run()方法。使用代理模式模拟该过程,绘制类图并编程实现。

Software+run (): voidProxyPicture

-app: Application

0..10..*Application+<>run (): void+<>run (): void

package ProxyPattern;

interface Software

{

}

class Application implements Software

{

}

class Picture implements Software

{

}

public class FastwayProxyClient

{

public static void main(String a[])

{

}

Software proxy=new Picture();

();

private Application app=new Application();

public void run(){

}

();

public void run()

{

}

n("Application is running!");;

void run();

}

运行结果: