公共類Elevator() { Button firstFloorbutton = ButtonFactory.getButtonInstance(this,1); Button secondFloorbutton = ButtonFactory.getButtonInstance(this,2); Button thirdFloorbutton = ButtonFactory.getButtonInstance(this,3); 按鈕fourthFloorbutton = ButtonFactory.getButtonInstance(this,4);已有-A Relationship
Fan fan1 = FanFactory.getFanInstance(this);
Light light1 = LightFactory.getInstance(this);
private void goUp()
{
.....
}
private void goDown()
{
......
}
.............
}
============================
public class Button()
{
Elevator E;
int floor;
public button (Elevator E, int floor)
{
this.E = E;
this.floor = floor;
}
public void buttonPressed()
{
//logic to determine which floor the elevator is currently at and determine whether to go up or down to reach "this.floor"
E.goUp(); // if need to go up
else
E.goDown() // if need to go down
}
}
==========================
public class ButtonFactory()
{
public Button getButtonInstance(Elevator E, int floor)
{
Button b =new Button(E, floor);
return b;
}
}
==================
public class FanFactory(){ .................}
=====================
public class LightFactory() { ........... }
==========================
電梯和按鈕類之間存在什麼樣的關係?
根據凱西和伯特(SCJP)第92頁:HAS-A關係是基於使用而不是繼承。換句話說,如果A類中的代碼具有對B類實例的引用,則A類HAS-A B有參考。
在我的示例中,Elevator類代碼具有對Button實例的引用,Button具有對實例的引用電梯類。
任何人都可以請澄清這一點。
很好的解釋湯姆。謝謝。 – AKh 2010-09-14 21:20:25