新聞中心
開(kāi)閉原則(Open Closed Principle)

福綿ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
開(kāi)閉原則的核心是:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。
白話意思就是我們改變一個(gè)軟件時(shí)(比如擴(kuò)展其他功能),應(yīng)該通過(guò)擴(kuò)展的方式來(lái)達(dá)到軟件的改變,而不應(yīng)愛(ài)修改原有代碼來(lái)實(shí)現(xiàn)變化。
開(kāi)閉原則算是前5中原則的一個(gè)抽象總結(jié),前五種是開(kāi)閉原則的一些具體實(shí)現(xiàn),所以如果使用開(kāi)閉原則,其實(shí)有點(diǎn)虛,因?yàn)樗鼪](méi)有一個(gè)固定的模式,但是最終保證的是提高程序的復(fù)用性、可維護(hù)性等要求。
要使用這一原則還需要結(jié)合著它的思想“對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉”與其他的五大設(shè)計(jì)原則根據(jù)經(jīng)驗(yàn)來(lái)開(kāi)發(fā)項(xiàng)目。
大體是這個(gè)意思,如果想深究,還需要看看其他的書(shū)籍。
下面是使用開(kāi)閉原則的一個(gè)簡(jiǎn)單示例,雖有些不準(zhǔn)確,但是是這個(gè)意思(領(lǐng)會(huì)精神)。
定義一個(gè)接口,尋找美女
- package com.loulijun.chapter6;
- public interface IFindGirl {
- //年齡
- public int getAge();
- //姓名
- public String getName();
- //長(zhǎng)相
- public String getFace();
- //身材
- public String getFigure();
- }
實(shí)現(xiàn)這個(gè)接口
- package com.loulijun.chapter6;
- public class FindGirl implements IFindGirl {
- private String name;
- private int age;
- private String face;
- private String figure;
- public FindGirl(String name, int age, String face, String figure)
- {
- this.name = name;
- this.age = age;
- this.face = face;
- this.figure = figure;
- }
- @Override
- public int getAge() {
- return age;
- }
- @Override
- public String getFace() {
- return face;
- }
- @Override
- public String getFigure() {
- return figure;
- }
- @Override
- public String getName() {
- return name;
- }
- }
場(chǎng)景:大街上
- package com.loulijun.chapter6;
- import java.text.NumberFormat;
- import java.util.ArrayList;
- public class Street {
- private final static ArrayList
girls = new ArrayList (); - //靜態(tài)初始化塊
- static
- {
- girls.add(new FindGirl("張含韻",23,"可愛(ài)型","165cm/47kg"));
- girls.add(new FindGirl("高圓圓",33,"時(shí)尚型","165cm/48kg"));
- girls.add(new FindGirl("章澤天",19,"清純型","168cm/47kg"));
- }
- public static void main(String args[])
- {
- System.out.println("----------美女在這里----------");
- for(IFindGirl girl:girls)
- {
- System.out.println("姓名:"+girl.getName()+" 年齡:"+girl.getAge()+
- " 長(zhǎng)相:"+girl.getFace()+" 身材:"+girl.getFigure());
- }
- }
- }
運(yùn)行結(jié)果:
----------美女在這里----------
姓名:張含韻 年齡:23 長(zhǎng)相:可愛(ài)型 身材:165cm/47kg
姓名:高圓圓 年齡:33 長(zhǎng)相:時(shí)尚型 身材:165cm/48kg
姓名:章澤天 年齡:19 長(zhǎng)相:清純型 身材:168cm/47kg
但是如果想獨(dú)立分出一個(gè)外國(guó)美女的類(lèi)別的話(比如增加一個(gè)國(guó)籍),可以通過(guò)修改接口、修改實(shí)現(xiàn)類(lèi)、通過(guò)擴(kuò)展來(lái)實(shí)現(xiàn)。
如果修改接口,也就意味著修改實(shí)現(xiàn)類(lèi),這樣對(duì)項(xiàng)目的變動(dòng)太大了,所以不推薦
如果修改實(shí)現(xiàn)類(lèi),這樣雖能解決問(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)景類(lèi)中做稍微修改就可以了
- package com.loulijun.chapter6;
- public interface IForeigner extends IFindGirl {
- //國(guó)籍
- public String getCountry();
- }
實(shí)現(xiàn)接口
- package com.loulijun.chapter6;
- public class ForeignerGirl implements IForeigner {
- private String name;
- private int age;
- private String country;
- private String face;
- private String figure;
- public ForeignerGirl(String name, int age, String country, String face, String figure)
- {
- this.name = name;
- this.age = age;
- this.country = country;
- this.face =face;
- this.figure = figure;
- }
- @Override
- public String getCountry() {
- // TODO Auto-generated method stub
- return country;
- }
- @Override
- public int getAge() {
- // TODO Auto-generated method stub
- return age;
- }
- @Override
- public String getFace() {
- // TODO Auto-generated method stub
- return face;
- }
- @Override
- public String getFigure() {
- // TODO Auto-generated method stub
- return figure;
- }
- @Override
- public String getName() {
- // TODO Auto-generated method stub
- return name;
- }
- }
然后在場(chǎng)景類(lèi)中只需要修改如下代碼即可,其他不變
- girls.add(new ForeignerGirl("Avirl",28,"美國(guó)","性感型","160cm/45kg"));
不過(guò)這些設(shè)計(jì)原則到不是絕對(duì)的,而是根據(jù)項(xiàng)目需求,實(shí)際需求來(lái)定奪使用。
分享標(biāo)題:設(shè)計(jì)模式6大原則:開(kāi)閉原則
文章URL:http://m.fisionsoft.com.cn/article/cdciche.html


咨詢(xún)
建站咨詢(xún)
