1. 程式人生 > 其它 >軟體設計-外觀模式

軟體設計-外觀模式

計算機開啟
在計算機主機(Mainframe)中,只需要按下主機的開機按鈕(on()),即可呼叫其他硬體裝置和軟體的啟動方法 ,如記憶體(Memory)的自檢(check())、CPU的執行(run())、硬碟(HardDisk)的讀取(read())、作業系統(OS)的載入(load()),如果某一過程發生錯誤則計算機啟動失敗。

類圖

java

package rjsj.no12;

/**
 * CPU類:子系統類
 *
 */
public class CPU {
    public void run(){
        System.out.println("處理器執行");
    }
    
public void off(){ System.out.println("處理器關閉"); } }
package rjsj.no12;

/**
 * Disk(硬碟)類:子系統類
 *
 */
public class Disk {
    public void read(){
        System.out.println("硬碟讀取");
    }
    public void off(){
        System.out.println("硬碟關閉");
    }
}
package rjsj.no12;

/**
 * Memory類:子系統類
 *
 
*/ public class Memory { public void check(){ System.out.println("記憶體自檢"); } public void off(){ System.out.println("記憶體關閉"); } }
package rjsj.no12;

/**
 * 作業系統OS類:子系統類
 *
 */
public class OS {
    public void load(){
        System.out.println("作業系統載入");
    }
    public
void off(){ System.out.println("作業系統關閉"); } }
package rjsj.no12;

/**
 * 主視窗類:外觀類
 *
 */
public class Mainframe {
    private Memory memory;
    private CPU cpu;
    private Disk disk;
    private OS os;

    public Mainframe(){
        memory = new Memory();
        cpu = new CPU();
        disk = new Disk();
        os = new OS();
    }

    public void on(){
        memory.check();
        cpu.run();
        disk.read();
        os.load();
    }

    public void off(){
        memory.off();
        cpu.off();
        disk.off();
        os.off();
    }
}
package rjsj.no12;

public class Client {
    public static void main(String[] args) {
        Mainframe mainframe = new Mainframe();
        System.out.println("電腦啟動中...");
        mainframe.on();
        System.out.println("啟動完成。");
        System.out.println("電腦關閉中...");
        mainframe.off();
        System.out.println("關閉完成。");
    }
}

C++

#include <iostream>

using namespace std;

class Memory{
public:
    void check(){
        cout<<"記憶體自檢"<<endl;
    }
    void off(){
        cout<<"記憶體關閉"<<endl;
    }
};

class Cpu{
public:
    void run(){
        cout<<"CPU執行"<<endl;
    }
    void off(){
        cout<<"CPU關閉"<<endl;
    }
};

class HardDisk{
public:
    void read(){
        cout<<"硬碟讀取"<<endl;
    }
    void off(){
        cout<<"硬碟關閉"<<endl;
    }
};

class Os{
public:
    void load(){
        cout<<"作業系統載入"<<endl;
    }
    void off(){
        cout<<"作業系統關閉"<<endl;
    }
};

class MainFrame{
private:
    Memory w1;
    Cpu w2;
    HardDisk w3;
    Os w4;
public:
    void on(){
        cout<<"開機中......"<<endl;
        w1.check();
        w2.run();
        w3.read();
        w4.load();
    }
    void off(){
        cout<<"關機中......"<<endl;
        w1.off();
        w2.off();
        w3.off();
        w4.off();
    }
};


int main(){
    MainFrame w;
    w.on();
    w.off();
    return 0;
}

執行截圖