模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:
非同步隨機生成按照各個路線行駛的車輛。
例如:由南向而來去往北向的車輛 ---- 直行車輛
由西向而來去往南向的車輛 ---- 右轉車輛
由東向而來去往南向的車輛 ---- 左轉車輛
訊號燈忽略黃燈,只考慮紅燈和綠燈。
應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制。
具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯相同,不考慮特殊情況下的控制邏輯。
注:南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛而後放行左轉車輛。
隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。
不要求實現gui,只考慮系統邏輯實現,可通過log方式展現程式執行結果。
涉及到的物件有:車輛、交通燈、交通燈控制器、以及路線。
由於是模擬交通燈管理邏輯,我們可以用字串代替車輛來模擬這個過程
車是否通過路口是通過交通燈決定的,所以每個路線對應乙個交通燈,為了統一程式設計,右轉路線也加入交通燈,只不過狀態一直為綠燈即可
這樣就有12條線路,對應12個交通燈
下面我們來看路口通行圖示
可以看到畫相同線條的路線上的交通燈其實是同步的,由南向北與由北向南的燈應該同時綠,同時紅,又由於右轉燈維護為常綠,所以,需要交通燈控制器控制的燈,其實只有4個,分別是圖中標註1,2,3,4的4條路線上的燈
由於交通燈是貫穿整個邏輯的,同時又只存在12個燈的例項物件,所以我們可以設計成列舉
內部維護自己的紅綠狀態
對外提供改變自己與對應燈狀態的方法
每條路線需要有乙個自己的名字來註明自己具體是哪條路線
內部還需要維護乙個集合類來存放車輛,這裡車輛用字串名稱來模擬
執行過程中通過乙個定時器每隔一秒來判斷自己路線上的燈是否為綠,為綠,則放行,為紅,則等待
內部維護乙個迭代器代表路口當前可通行的燈,通過定時器每隔固定時間改變當前燈的狀態,並獲取下一組燈,使之變綠
lamp類
public
enum lamp
37:
38://lightup表示亮起綠燈
39:public
void lightup()
47:
48://lightdown表示亮起紅燈
49:public lamp lightdown()
61:
62://獲得當前狀態
63:public
boolean islight()
66: }lampcontroler類
public
class lampcontroler
23: },
24: 10,
25: 10,
26: timeunit.seconds);
27: }
28: }road類
public
class road catch (interruptedexception e)
23: vechicles.add(road.this.name+"_"+i);
24: }
25: }
26: });
27:
28://定時器
29: scheduledexecutorservice timer = executors.newscheduledthreadpool(1);
30://每隔一秒判斷一次當前路線上燈的狀態
31: timer.scheduleatfixedrate(
32:new runnable()
42: }
43: }
44: },
45: 1,
46: 1,
47: timeunit.seconds);
48: }
49: }測試類public
class mainclass
15: }
16: }由於還沒有看設計模式,所以很多想法實現起來非常複雜,等以後深入了,再放上自己的**總結下這個實現的利弊吧
思路非常清晰,邏輯簡單明瞭,用來模擬乙個邏輯是夠用了
因為只是個邏輯,所有感覺程式擴充套件性不強,等以後深入了設計模式,會放上自己的框架
現在對設計模式的理解只有一條原則,就是開放封閉原則
即:對擴充套件開放,對修改封閉
交通燈管理系統
銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...
交通燈管理系統
需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下 1.非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2.訊號燈忽略黃燈,只考慮紅燈和綠燈。3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈...
交通燈管理系統
1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...