日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
java軟件設(shè)計(jì)七大原則的定義

本篇內(nèi)容介紹了“java軟件設(shè)計(jì)七大原則的定義”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出廣陵免費(fèi)做網(wǎng)站回饋大家。

1、開(kāi)閉原則

1.1、定義

一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該`對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉`。用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié)。
優(yōu)點(diǎn):提高軟件系統(tǒng)的可復(fù)用性以及可維護(hù)性

1.2、代碼演示

public interface ICourse {
    Integer getId();
    String getName();
    Double getPrice();
}
public class JavaCourse implements ICourse{
    private Integer Id;
    private String name;
    private Double price;
    public JavaCourse(Integer id, String name, Double price) {
        this.Id = id;
        this.name = name;
        this.price = price;
    }

    public Integer getId() {
        return this.Id;
    }

    public String getName() {
        return this.name;
    }

    public Double getPrice() {
        return this.price;
    }
}
// 如果需要在原有功能基礎(chǔ)上添加一個(gè)獲取打折價(jià)格的功能,開(kāi)閉原則建議不要修改原有接口,這里可以繼承原有JavaCourse類,
// 在原有功能之上擴(kuò)展
public class JavaDiscountCourse extends JavaCourse {

    public JavaDiscountCourse(Integer id, String name, Double price) {
        super(id, name, price);
    }

    public Double getDiscountPrice(){
        return super.getPrice()*0.8;
    }
}

2、依賴倒置原則

2.1、定義

`高層模塊不應(yīng)該依賴低層模塊`,二者都應(yīng)該依賴其抽象。抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。
針對(duì)接口編程,不要針對(duì)實(shí)現(xiàn)編程。
優(yōu)點(diǎn):可以減少類之間的耦合性,提高系統(tǒng)的穩(wěn)定性,提高代碼可讀性和可維護(hù)性,可降低修改程序所造成的風(fēng)險(xiǎn)。

2.2、代碼演示

java軟件設(shè)計(jì)七大原則的定義

public interface ICourse {
    void studyCourse();
}

public class JavaCourse implements ICourse {

    @Override
    public void studyCourse() {
        System.out.println("Geely在學(xué)習(xí)Java課程");
    }
}

public class PythonCourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("Geely在學(xué)習(xí)Python課程");
    }
}
public class Geely {

    public void setiCourse(ICourse iCourse) {
        this.iCourse = iCourse;
    }

    private ICourse iCourse;

    public void studyImoocCourse() {
        iCourse.studyCourse();
    }

}
public class Test {

    public static void main(String[] args) {
        Geely geely = new Geely();
        geely.setiCourse(new JavaCourse());
        geely.studyImoocCourse();

        geely.setiCourse(new FECourse());
        geely.studyImoocCourse();
    }
}

3、單一職責(zé)原則

3.1、定義

不要存在多于一個(gè)導(dǎo)致類變更的原因。一個(gè)類/接口/方法只負(fù)責(zé)一項(xiàng)職責(zé)。
優(yōu)點(diǎn):降低類的復(fù)雜度、提高類的可讀性、提高系統(tǒng)的可維護(hù)性、降低變更引起的風(fēng)險(xiǎn)。

3.2、代碼演示

// 不推薦的寫法
public class Bird {
    public void mainMoveMode(String birdName){
        
        if("鴕鳥".equals(birdName)){
            System.out.println(birdName+"用腳走");
        }else{
            System.out.println(birdName+"用翅膀飛");
        }
    }
}
public class FlyBird {
    public void mainMoveMode(String birdName){
        System.out.println(birdName+"用翅膀飛");
    }
}

public class WalkBird {
    public void mainMoveMode(String birdName){
        System.out.println(birdName+"用腳走");
    }
}
public class Test {
    public static void main(String[] args) {
        // 不推薦寫法
        Bird bird = new Bird();
        bird.mainMoveMode("大雁");
        bird.mainMoveMode("鴕鳥");

        // 推薦寫法,功能單一
        FlyBird flyBird = new FlyBird();
        flyBird.mainMoveMode("大雁");

        WalkBird walkBird = new WalkBird();
        walkBird.mainMoveMode("鴕鳥");
    }
}

4、接口隔離原則

4.1、定義

用多個(gè)專門的接口,而不使用單一的總接口。客戶端不應(yīng)該依賴它不需要的接口。
一個(gè)類對(duì)另一個(gè)類的依賴應(yīng)該建立在最小的接口上。
建立單一接口,不要建立龐大臃腫的接口。
`盡量細(xì)化接口,接口中的方法盡量少`。
適度原則,一定要適度。
優(yōu)點(diǎn):符合我們常說(shuō)的高內(nèi)聚低耦合的設(shè)計(jì)思想,從而使得類具有很好的可讀性、可擴(kuò)展性和可維護(hù)性。

4.2、代碼演示

public interface IAnimalAction {
    void eat();
    void fly();
    void swim();
}

// 將一個(gè)接口拆分成3個(gè)接口
public interface IEatAnimalAction {
    void eat();
}

public interface IFlyAnimalAction {
    void fly();
}

public interface ISwimAnimalAction {
    void swim();
}
public class Dog implements ISwimAnimalAction,IEatAnimalAction {

    @Override
    public void eat() {

    }

    @Override
    public void swim() {

    }
}

5、迪米特原則

5.1、定義

一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解,又叫最少知道原則。
`盡量降低類與類之間的耦合`。
優(yōu)點(diǎn):降低類之間的耦合。

5.2、代碼演示

public class Boss {

    public void commandCheckNumber(TeamLeader teamLeader){
        teamLeader.checkNumberOfCourses();
    }

}

public class Course {
}

public class TeamLeader {
    public void checkNumberOfCourses() {
        List courseList = new ArrayList();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        System.out.println("在線課程的數(shù)量是:" + courseList.size());
    }
}
public class Test {
    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }
}

6、里氏替換原則

6.1、定義

所有引用基類(父類)的地方必須能透明地使用其子類的對(duì)象。通俗地講,子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。
里氏替換原則意思說(shuō),在軟件中將一個(gè)基類對(duì)象(父類)替換成它的子類對(duì)象,程序?qū)⒉粫?huì)產(chǎn)生任何錯(cuò)誤和異常,反過(guò)來(lái)則不成立,
如果一個(gè)軟件實(shí)體使用的是一個(gè)子類對(duì)象的話,那么它不一定能夠使用基類對(duì)象。里氏代換原則是實(shí)現(xiàn)開(kāi)閉原則的重要方式之一,
由于使用基類對(duì)象的地方都可以使用子類對(duì)象,因此在程序中盡量使用基類類型來(lái)對(duì)對(duì)象進(jìn)行定義,而在程序運(yùn)行時(shí)再確定其子類
類型,用子類對(duì)象來(lái)替換父類對(duì)象。
例如:我喜歡動(dòng)物,那我一定喜歡狗,因?yàn)楣肥莿?dòng)物的子類。但是我喜歡狗,不能據(jù)此斷定我喜歡動(dòng)物,因?yàn)槲也⒉幌矚g老鼠,雖然
它也是動(dòng)物。

6.2、實(shí)現(xiàn)原則

1) `子類可以實(shí)現(xiàn)父類的抽象方法,但是不能覆蓋/重寫父類的非抽象方法`。
2) 子類中可以增加自己特有的方法。
3) 當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。
4) 當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí),方法的后置條件(即方法的返回值)要比父類更嚴(yán)格。

參考: Java七大設(shè)計(jì)原則

7、組合/聚合復(fù)用原則

7.1、定義

盡量使用合成和聚合,而不是集成來(lái)達(dá)到復(fù)用的目的。該原則就是在一個(gè)新的對(duì)象里面使用一些已有的對(duì)象,使之成為新對(duì)象的
一部分,新的對(duì)象通過(guò)向這些對(duì)象的委派達(dá)到復(fù)用已有功能的目的。

“java軟件設(shè)計(jì)七大原則的定義”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享名稱:java軟件設(shè)計(jì)七大原則的定義
文章鏈接:http://www.dlmjj.cn/article/ihihoo.html