以下第一部分是物件導向程式設計基本原則,後面三個部分是設計模式(design pattern)。
基本原則 (1~5 又稱 SOLID)
[例如] 郵差送來掛號信,須要蓋收件人印章。 一般人不會叫郵差自己進屋找印章,既浪費時間也不安全。 正常都是自己進屋拿,或是請其他家人幫忙拿。 因為不應該給郵差進屋找東西的權限、郵差也不須要知道印章放在屋內何處。
###[參考]
http://zh.wikipedia.org/wiki/%E9%A1%9E%E5%88%A5%E5%9C%96 http://antrash.pixnet.net/blog/post/80808873-%E8%AB%96%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91part-9%EF%BC%9A%E8%AA%8D%E8%AD%98is-a%E8%B7%9Fhas-a%E7%9A%84%E5%B7%AE%E7%95%B0%E6%80%A7 http://fengyu0318.sg1003.myweb.hinet.net/ood/classRelationShip.pdf
創建型模式 (Creational Pattern)
簡單工廠模式 (Simple Factory pattern) 使用 class 的靜態方法,依不同條件,取得不同物件,並用取得的物件,做類似的事情。 缺點是要新增不同條件時,須修改到類別的靜態方法。
工廠方法模式 (Factory Method Pattern) 避免了簡單工廠模式,要新增條件時,對工廠類靜態方法的修改(對修改應該是封閉的)。
抽象工廠模式 (Abstract Factory Pattern) 抽象工廠類別,可返回同類型的工廠。這些返回的工廠,有多個相同的方法,做類似的事。
建造者模式(生成器模式) (Builder Pattern) 將某種類的產品建造過程,將生產步驟整理出來, 所有要生產這類產品的 class,均要實現這些標準化步驟。 另外,為避免實際生產時,遺漏某步驟,統一由一個指揮者 class,執行一系列的生產步驟。
原型模式 (Prototype Pattern) 複製一個已存在的物件,來產生新的物件。 淺複製(shallow clone):僅複製舊物件內的屬性,舊物件內的物件不複製。所以新、舊物件會共用這些其他物件。 深複製(deep clone):舊物件內的屬性、參考到的其他物件,都會複製一份。
單例模式 (Singleton Pattern) 讓一個類別只能有一個實例(Instance)的方法。 產生單一實例的方式: 懶漢方式(Lazy initialization):第一次使用時,才產生實例。 餓漢方式(Eager initialization):class 載入時就產生實例,不管後面會不會用到。
結構型模式 (Structural Pattern)
###[參考]
http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F
http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29 (SOLID)
http://en.wikipedia.org/wiki/Software_design_pattern
http://www.dofactory.com/Patterns/Patterns.aspx