日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】开闭原则

發布時間:2025/3/20 asp.net 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】开闭原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開閉原則

  • 開閉原則是編程中最基礎最重要的設計原則
  • 一個軟件實體如類,模塊和函數應該對擴展開放**(對提供方),對修改關閉(對使用方)**。用抽象構建框架,用實?現擴展細節。
  • 當軟件需要變化時,盡量通過擴展軟件實體的行為來實現變化,而不是通過修改已有的代碼來實現變化。
  • 編程中遵循其它原則,以及使用設計模式的目的就是遵循開閉原則。
  • 看如下的例子,如果要求再擴展一個功能,比如利用163發,那么需要在添加一個類,在sendEmail中添加一個方法,在同類print中繼續添加代碼。這就未必了對修改關閉的原則。改動地方太多,耦合性增加,也不符合單一職責原則。

    class Email2 {int e_type; } class QQ extends Email2{QQ(){super.e_type = 1;} }class Google extends Email2{Google(){super.e_type = 2;} }class SendEmail{public void print(Email2 e) {if(e.e_type == 1) send2();else send1();}public void send1() {System.out.println("Google發郵箱");}public void send2() {System.out.println("QQ發郵箱");} } public class OCPrinciple {public static void main(String[] args) {SendEmail sendEmail = new SendEmail();sendEmail.print(new QQ());sendEmail.print(new Google());} }

    改為符合開閉原則的代碼

    改進后的代碼,只需要將Email改為一個抽象類,添加一個抽象方法send,添加一個SouHu類作為擴展即可。

    abstract class Email2 {int e_type;public abstract void send(); } class QQ extends Email2{QQ(){super.e_type = 1;}public void send() {System.out.println("QQ發郵箱");} }class Google extends Email2{Google(){super.e_type = 2;}public void send() {System.out.println("Google發郵箱");} }class SouHu extends Email2{SouHu() {super.e_type = 3;}public void send() {System.out.println("SouHu發郵箱");} }class SendEmail{public void print(Email2 e) {e.send();} } public class OCPrinciple {public static void main(String[] args) {SendEmail sendEmail = new SendEmail();sendEmail.print(new QQ());sendEmail.print(new Google());sendEmail.print(new SouHu());} }

    總結

    以上是生活随笔為你收集整理的【设计模式】开闭原则的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。