www.cnblogs.com/Mainz/archi…html
1)直接修改代碼。設計模式
2)直接修改代碼,但只侷限在一個類或方法中。架構
3)利用繼承,編寫子類繼承之後的類,在子類裏添加新的業務邏輯。框架
4)運行時對象裝配。 將類的實例化邏輯移到運行時,經過反射,來進行裝配。Spring目前作的主要就是這些事情。到這個時候才真正知足開閉原則。 Spring給咱們提供了一個很是靈活擴展的基礎技術架構。設計
5)基於模塊的運行時動態擴展。 OSGi給出瞭解決方案,能夠實現模塊級別的動態擴展,並且是運行時的。所謂運行時模塊的動態擴展,好比說你須要增長一些新的功能,你能夠將新開發的類和文件按照Bundle進行組織,而後直接扔到運行時環境下,這些功能就能夠用了。代理
6)基於中間語言。框架一般定義了一些Hotspot(熱點),在這些點上,能夠進行擴展。cdn
工廠模式htm
抽象工廠模式對象
觀察者模式:很方便增長觀察者,方便系統擴展blog
模板方法模式:很方便的實現不穩定的擴展點,完成功能的重用
適配器模式:能夠很方便地對適配其餘接口
代理模式:能夠很方便在原來功能的基礎上增長功能或者邏輯
責任鏈模式:能夠很方便得增長攔截器/過濾器實現對數據的處理,好比struts2的責任鏈
策略模式:經過新增策略從而改變原來的執行策略