一款賽車遊戲, 玩家可以換開很多車
而每款車外觀參數解鎖條件都不相同
但使用方法都一樣(加速/減速)
那麼就可以
把一樣的抽取出來 : 寫一個interface "Car", 支援所有車子該有的操作
把不同的隱藏起來 : 寫一個"factory" class或method, 你給他型號, 他給你車子的指標
好處是 :
1.user不能知道car的全部的member method/variable (因為interface能隱藏實作細節,甚至隱藏類別的存在)
2.user可以用同一種pointer type指向各種car, car再多也不用改code (因為interface能提供多型)
3.factory把車子的創建集中在一個function內, 就不怕外界用錯誤的方法創建car.
4.你想要創新的car只要建立新的xxxCar class就好 (open for extension)
4.建立新的xxxCar並不影響其他car或user內的code (close for modification)