代码质量-开闭原则
前言
什么是開(kāi)閉原則?
- 開(kāi)閉原則(Open-Closed Principle, OCP)是
面向?qū)ο?/code> 設(shè)計(jì)中的一個(gè)重要原則。 - 它指出軟件實(shí)體(如類、模塊、函數(shù)等)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉。這意味著一個(gè)實(shí)體允許其行為被擴(kuò)展,但不允許修改其源代碼。
不遵循開(kāi)閉原則的代碼示例
假設(shè)有一個(gè)簡(jiǎn)單的類,用于根據(jù)不同的形狀類型繪制圖形。如果要添加新的形狀類型,需要修改已有的代碼。
代碼在:https://github.com/BNTang/code-quality/tree/main/src/main/java/top/it6666/開(kāi)閉原則/不遵循開(kāi)閉原則的代碼示例
遵循開(kāi)閉原則的代碼示例
改進(jìn)后的代碼使用 多態(tài) 和 繼承 來(lái)允許新的形狀類型的添加,而不需要修改現(xiàn)有代碼。
代碼在:https://github.com/BNTang/code-quality/tree/main/src/main/java/top/it6666/開(kāi)閉原則/遵循開(kāi)閉原則的代碼示例
在這個(gè)遵循開(kāi)閉原則的版本中,GraphicEditor 不需要知道具體的形狀類型。它只調(diào)用 Shape 類中的 draw() 方法。這樣,添加新的形狀類型時(shí),只需要擴(kuò)展 Shape 類并實(shí)現(xiàn) draw() 方法,而不需要修改 GraphicEditor 或其他形狀類的代碼。這就是遵循開(kāi)閉原則的設(shè)計(jì)。
解決方案
遵循開(kāi)閉原則的其他解決方案通常涉及使用設(shè)計(jì)模式,這些模式能夠提供靈活性和擴(kuò)展性,同時(shí)保持現(xiàn)有代碼的穩(wěn)定性。
以下是一些常見(jiàn)的設(shè)計(jì)模式和技術(shù),它們有助于實(shí)現(xiàn)開(kāi)閉原則:
- 策略模式(Strategy Pattern)
- 工廠模式(Factory Pattern)
- 模板方法模式(Template Method Pattern)
- 裝飾器模式(Decorator Pattern)
- 依賴倒置原則(Dependency Inversion Principle)
通過(guò)采用這些設(shè)計(jì)模式和原則,可以創(chuàng)建靈活且可維護(hù)的軟件系統(tǒng),使得新功能的添加或現(xiàn)有功能的變更,不會(huì)破壞或過(guò)多地修改現(xiàn)有的代碼結(jié)構(gòu)。這些方法都是為了達(dá)到“對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉”的目標(biāo)。
總結(jié)
- 上一篇: MySQL运行在docker容器中会损失
- 下一篇: Flask 使用Jinja2模板引擎