對於特定的OOP問題的組織,我有一個快速的問題。OOP組織問題的最佳解決方案
說我有一個地形類,充滿了瓷磚。類Tile有多個衍生物,即Door。門類有一個叫做open()的方法,它打開門,close()關閉門。這是非常有意義的,直到這兩種方法在打開和/或關閉之前都需要檢查某些東西。如何在不知道其父項的情況下對某個對象進行門檢查?
一個簡單的解決方案是在調用open()之前檢查某些東西,但是如果有不同類型的門需要檢查不同的形狀,它會在更高的層次上造成混亂。
看起來這會有一個簡單的答案,但它似乎也經常遇到這個問題,往往不是。
門是不活動的,一個處理程序打開並關閉它們,正是這個處理程序需要檢查門是否被鎖定/鎖定/已經處於它想要的狀態。門只知道自己,而不瞭解其環境中的其他事物。 – slashmais
@slashmais所以我的解決方案是正確的? – lowq
是的,看起來很正確 - 不同的處理程序每個人在接近門的方式上都有不同的能力;例如:你會解鎖並打開你的房門,警察會踢它,一個自動化的設備將它做的事情等。 – slashmais