软件设计原则——开闭原则
生活随笔
收集整理的這篇文章主要介紹了
软件设计原则——开闭原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開閉原則
對擴展開放,對修改關閉。
在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。簡言之,是為了使程序的擴展性好,易于維護和升級。
想要達到這樣的效果,我們需要使用接口和抽象類。
因為抽象靈活性好,適應性廣,只要抽象的合理,可以基本保持軟件架構的穩定。
而軟件中易變的細節可以從抽象派生來的實現類來進行擴展,當軟件需要發生變化時,只需要根據需求重新派生一個實現類來擴展就可以了。
下面以 搜狗輸入法 的皮膚為例介紹開閉原則的應用。
【例】搜狗輸入法 的皮膚設計。
分析:搜狗輸入法 的皮膚是輸入法背景圖片、窗口顏色和聲音等元素的組合。用戶可以根據自己的喜愛更換自己的輸入法的皮膚,也可以從網上下載新的皮膚。這些皮膚有共同的特點,可以為其定義一個抽象類(AbstractSkin),而每個具體的皮膚(DefaultSpecificSkin和HeimaSpecificSkin)是其子類。用戶窗體可以根據需要選擇或者增加新的主題,而不需要修改原代碼,所以它是滿足開閉原則的。
AbstractSkin.java
package com.itheima.principles.demo1;/*** @version v1.0* @ClassName: AbstractSkin* @Description: 抽象皮膚類*/ public abstract class AbstractSkin {//顯示的方法public abstract void display(); }DefaultSkin.java
package com.itheima.principles.demo1;/*** @version v1.0* @ClassName: DefaultSkin* @Description: 默認皮膚類*/ public class DefaultSkin extends AbstractSkin {public void display() {System.out.println("默認皮膚");} }HeimaSkin.java
package com.itheima.principles.demo1;/*** @version v1.0* @ClassName: HeimaSkin* @Description: 黑馬皮膚*/ public class HeimaSkin extends AbstractSkin {public void display() {System.out.println("黑馬皮膚");} }SougouInput.java
package com.itheima.principles.demo1;/*** @version v1.0* @ClassName: SougouInput* @Description: 搜狗輸入法* @Author: dym*/ public class SougouInput {private AbstractSkin skin;public void setSkin(AbstractSkin skin) {this.skin = skin;}public void display() {skin.display();} }測試代碼
package com.itheima.principles.demo1;/*** @version v1.0* @ClassName: Client* @Description: TODO(一句話描述該類的功能)* @Author: dym*/ public class Client {public static void main(String[] args) {//1,創建搜狗輸入法對象SougouInput input = new SougouInput();//2,創建皮膚對象//DefaultSkin skin = new DefaultSkin();HeimaSkin skin = new HeimaSkin();//3,將皮膚設置到輸入法中input.setSkin(skin);//4,顯示皮膚input.display();} }?
總結
以上是生活随笔為你收集整理的软件设计原则——开闭原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类与类之间关系的表示方式
- 下一篇: 软件设计原则——里氏代换原则