前言
本文要介紹的OCP,不是指證照考試中的Oracle Certified Professional,
而是OOD(物件導向設計)中的Open Close Principle(開放封閉原則)。
精神
系統的變動幾乎是必然的(沒有一成不變的系統,因為使用者是善變的),
開放封閉原則的精神在於面對系統的變動時,儘量不要修改既存的程式碼,
而是增加新的模組、類別來處理系統的變更。
2011年5月10日 星期二
2011年4月12日 星期二
Design Principle - Liskov's Substitution Principle (LSP)
簡介
LSP指得是在程式中使用base class(基礎類別)的地方,
都能夠改用其derived class(沿生類別),
而且不會讓程式出現非預期的結果(例如RuntimeException),
也不會影響程式原本的功能。
亦即,derived class能夠做為base class的substitution(替代品)。
反面範例
最常見的例子,就是正方形與矩形之間的關係。
數學上來說,正方形是一種(is-A)矩形,
假設有個數學系統,
須新增一個能夠計算矩形面積的程式,
會直覺地設計成:
LSP指得是在程式中使用base class(基礎類別)的地方,
都能夠改用其derived class(沿生類別),
而且不會讓程式出現非預期的結果(例如RuntimeException),
也不會影響程式原本的功能。
亦即,derived class能夠做為base class的substitution(替代品)。
反面範例
最常見的例子,就是正方形與矩形之間的關係。
數學上來說,正方形是一種(is-A)矩形,
假設有個數學系統,
須新增一個能夠計算矩形面積的程式,
會直覺地設計成:
2011年4月10日 星期日
Design Principle - Interface Segregation Principle (ISP)
ISP除了有Interface Segregation Principle也就是介面分離原則外,
當然最為大家熟知的就是Internet service provider,也就是網際網路服務提供者,
這裡要介紹的當然不會是後者,而是OO(物件導向)設計原則中的ISP。
所謂的ISP,就是希望programmer在設計介面時,能夠考慮到介面中的方法,是否要放在同一個介面。
請見以下的例子:
當然最為大家熟知的就是Internet service provider,也就是網際網路服務提供者,
這裡要介紹的當然不會是後者,而是OO(物件導向)設計原則中的ISP。
所謂的ISP,就是希望programmer在設計介面時,能夠考慮到介面中的方法,是否要放在同一個介面。
請見以下的例子:
訂閱:
文章 (Atom)