DogDoor class :
public class DogDoor
{
private Boolean open;
//建構子初始化門的狀態
public DogDoor()
{
this.open = false;
}
//打開狗門
public string OpenDoor()
{
open = true;
return("The dog door opens.");
//這裡可以加寫等待五秒或幾秒後呼叫關閉狗門的方法
}
//關閉狗門
public string CloseDoor()
{
open = false;
return ("The dog door closes.");
}
//回傳狗門目前狀,是否打開
public Boolean isOpen()
{
return open;
}
}
Remote Class :
public class Remote
{
//宣告一個DogDoor class之型別變數 : door
private DogDoor door;
public Remote(DogDoor door)
{
//將傳入之參數door値指派給一開始宣告的door
this.door = door;
}
public string pressButton()
{
//呼叫判斷門目前狀態,若打開執行關門方法
if (door.isOpen())
door.CloseDoor();
else//若關閉,執行開門方法
door.OpenDoor();
return "You press the button.";
}
}
BarkRecognizer Class:
public class BarkRecognizer
{
//同樣方式,將傳入參數指定給給宣告的field
private DogDoor door;
public BarkRecognizer(DogDoor door)
{
this.door = door;
}
//狗門接收狗叫聲之方法
public string recognize(string bark)
{
//只是用來接收開狗門後回傳的字串而已(就是回傳門打開了~)
string doorStatus;
//狗門廳到聲音將門打開,這方法中過幾秒會把門關上
doorStatus = door.OpenDoor();
return ("BarkRecognizer: Heard a '" +bark + "'"+doorStatus);
}
}
webPage .CS:
protected void Page_Load(object sender, EventArgs e)
{
DogDoor door = new DogDoor();
//自動關門:把要開或關的門指定給BarkRecognizer類別
BarkRecognizer recognizer = new BarkRecognizer(door);
//手動關門:把要開或關的門指定給Remote類別
Remote remote = new Remote(door);
Response.Write("Fido starts barking."+"<br/>");
//傳入叫聲,將門打開,打開門方法有過幾秒會自動關門
Response.Write(recognizer.recognize("Woof")+"<br/>");
Response.Write("Fido has gone outside..."+"</br>");
Response.Write("Fido's all done..." + "</br>");
//上完廁所要回來了
Response.Write("...but he's stuck outside!"+"</br>");
Response.Write("Fido starts barking."+"</br>");
//傳入叫聲,將門打開,打開門方法有過幾秒會自動關門
Response.Write(recognizer.recognize("Woof")+"</br>");
Response.Write("\nFido's back inside...");
}