日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
設(shè)計(jì)模式6大原則:開閉原則

開閉原則(Open Closed Principle)

福綿ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

開閉原則的核心是:對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。

白話意思就是我們改變一個(gè)軟件時(shí)(比如擴(kuò)展其他功能),應(yīng)該通過(guò)擴(kuò)展的方式來(lái)達(dá)到軟件的改變,而不應(yīng)愛(ài)修改原有代碼來(lái)實(shí)現(xiàn)變化。

開閉原則算是前5中原則的一個(gè)抽象總結(jié),前五種是開閉原則的一些具體實(shí)現(xiàn),所以如果使用開閉原則,其實(shí)有點(diǎn)虛,因?yàn)樗鼪](méi)有一個(gè)固定的模式,但是最終保證的是提高程序的復(fù)用性、可維護(hù)性等要求。

要使用這一原則還需要結(jié)合著它的思想“對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉”與其他的五大設(shè)計(jì)原則根據(jù)經(jīng)驗(yàn)來(lái)開發(fā)項(xiàng)目。

大體是這個(gè)意思,如果想深究,還需要看看其他的書籍。

下面是使用開閉原則的一個(gè)簡(jiǎn)單示例,雖有些不準(zhǔn)確,但是是這個(gè)意思(領(lǐng)會(huì)精神)。

定義一個(gè)接口,尋找美女

 
 
 
  1. package com.loulijun.chapter6;
  2.  
  3. public interface IFindGirl {
  4.     //年齡
  5.     public int getAge();
  6.     //姓名
  7.     public String getName();
  8.     //長(zhǎng)相
  9.     public String getFace();
  10.     //身材
  11.     public String getFigure();
  12. }

實(shí)現(xiàn)這個(gè)接口

 
 
 
  1. package com.loulijun.chapter6;
  2.  
  3. public class FindGirl implements IFindGirl {
  4.     private String name;
  5.     private int age;
  6.     private String face;
  7.     private String figure;
  8.      
  9.     public FindGirl(String name, int age, String face, String figure)
  10.     {
  11.         this.name = name;
  12.         this.age = age;
  13.         this.face = face;
  14.         this.figure = figure;
  15.     }
  16.  
  17.     @Override
  18.     public int getAge() {
  19.         return age;
  20.     }
  21.  
  22.     @Override
  23.     public String getFace() {
  24.         return face;
  25.     }
  26.  
  27.     @Override
  28.     public String getFigure() {
  29.         return figure;
  30.     }
  31.  
  32.     @Override
  33.     public String getName() {
  34.         return name;
  35.     }
  36.      
  37.  
  38. }

場(chǎng)景:大街上

 
 
 
  1. package com.loulijun.chapter6;
  2.  
  3. import java.text.NumberFormat;
  4. import java.util.ArrayList;
  5.  
  6. public class Street {
  7.     private final static ArrayList girls = new ArrayList();
  8.     //靜態(tài)初始化塊
  9.     static
  10.     {
  11.         girls.add(new FindGirl("張含韻",23,"可愛(ài)型","165cm/47kg"));
  12.         girls.add(new FindGirl("高圓圓",33,"時(shí)尚型","165cm/48kg"));
  13.         girls.add(new FindGirl("章澤天",19,"清純型","168cm/47kg"));
  14.     }
  15.     public static void main(String args[])
  16.     {
  17.         System.out.println("----------美女在這里----------");
  18.         for(IFindGirl girl:girls)
  19.         {
  20.             System.out.println("姓名:"+girl.getName()+" 年齡:"+girl.getAge()+
  21.                     "  長(zhǎng)相:"+girl.getFace()+"  身材:"+girl.getFigure());
  22.         }
  23.     }
  24. }

運(yùn)行結(jié)果:

----------美女在這里----------

姓名:張含韻 年齡:23 長(zhǎng)相:可愛(ài)型 身材:165cm/47kg
姓名:高圓圓 年齡:33 長(zhǎng)相:時(shí)尚型 身材:165cm/48kg
姓名:章澤天 年齡:19 長(zhǎng)相:清純型 身材:168cm/47kg

但是如果想獨(dú)立分出一個(gè)外國(guó)美女的類別的話(比如增加一個(gè)國(guó)籍),可以通過(guò)修改接口、修改實(shí)現(xiàn)類、通過(guò)擴(kuò)展來(lái)實(shí)現(xiàn)。

如果修改接口,也就意味著修改實(shí)現(xiàn)類,這樣對(duì)項(xiàng)目的變動(dòng)太大了,所以不推薦

如果修改實(shí)現(xiàn)類,這樣雖能解決問(wèn)題,但是明顯有些牽強(qiáng),如果需要其他變動(dòng)的時(shí)候會(huì)顯得邏輯混亂

所以,通過(guò)擴(kuò)展來(lái)實(shí)現(xiàn)是最簡(jiǎn)單的方式

如何擴(kuò)展:

可以定義一個(gè)IForeigner接口繼承自IFindGirl,在IForeigner接口中添加國(guó)籍屬性getCountry(),然后實(shí)現(xiàn)這個(gè)接口即可,然后就只需要在場(chǎng)景類中做稍微修改就可以了

 
 
 
  1. package com.loulijun.chapter6;
  2.  
  3. public interface IForeigner extends IFindGirl {
  4.     //國(guó)籍
  5.     public String getCountry();
  6. }

實(shí)現(xiàn)接口

 
 
 
  1. package com.loulijun.chapter6;
  2.  
  3. public class ForeignerGirl implements IForeigner {
  4.     private String name;
  5.     private int age;
  6.     private String country;
  7.     private String face;
  8.     private String figure;
  9.      
  10.     public ForeignerGirl(String name, int age, String country, String face, String figure)
  11.     {
  12.         this.name = name;
  13.         this.age = age;
  14.         this.country = country;
  15.         this.face =face;
  16.         this.figure = figure;
  17.     }
  18.     @Override
  19.     public String getCountry() {
  20.         // TODO Auto-generated method stub
  21.         return country;
  22.     }
  23.  
  24.     @Override
  25.     public int getAge() {
  26.         // TODO Auto-generated method stub
  27.         return age;
  28.     }
  29.  
  30.     @Override
  31.     public String getFace() {
  32.         // TODO Auto-generated method stub
  33.         return face;
  34.     }
  35.  
  36.     @Override
  37.     public String getFigure() {
  38.         // TODO Auto-generated method stub
  39.         return figure;
  40.     }
  41.  
  42.     @Override
  43.     public String getName() {
  44.         // TODO Auto-generated method stub
  45.         return name;
  46.     }
  47.  
  48. }

然后在場(chǎng)景類中只需要修改如下代碼即可,其他不變

 
 
 
  1. girls.add(new ForeignerGirl("Avirl",28,"美國(guó)","性感型","160cm/45kg"));

不過(guò)這些設(shè)計(jì)原則到不是絕對(duì)的,而是根據(jù)項(xiàng)目需求,實(shí)際需求來(lái)定奪使用。


網(wǎng)頁(yè)題目:設(shè)計(jì)模式6大原則:開閉原則
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/cdciche.html