[問題] 關於Open Close Principle的疑問

作者: erttyy8821 (俠)   2014-12-25 11:04:51
關於Open Close Principle 這個原則
我只大概明白是藉由一個abstract來當中間的橋樑
再需求變更的時候可以不破壞原來的架構並加入新的功能
但是一直不是很明白怎麼實作
今天找到了一個網站的example
http://www.oodesign.com/open-close-principle.html
我想問 Good example中
雖然我們不必因為新增一個新Shape就要在main中多開一個function
但我如果想draw不同的形狀
也是需要先判斷需求 然後再new所需的object assign進去
但這樣對於OCP所期望的保有彈性不是有限嘛?
還是我對於OCP的實作理解有錯誤?
以下是我針對good sample改寫完之後的想法
還望版上的先進針對我的盲點可以提點一下
感謝
// Open-Close Principle - Good example
public class main
{
public main()
{
if(need draw circle)
drawShape(new Circle()); <
作者: swpoker (swpoker)   2014-12-25 12:22:00
就是要把可怕的if去掉拉範例只有if else還感受不到可怕,實際是if(){if(){if(){..如何實作回歸到各shape本身,程式只需呼叫適當的類別及可
作者: erttyy8821 (俠)   2014-12-25 16:31:00
OK 感謝 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com