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

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

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

1、開閉原則

1.1、定義

一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該`對(duì)擴(kuò)展開放,對(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à)格的功能,開閉原則建議不要修改原有接口,這里可以繼承原有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):符合我們常說的高內(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<Course> courseList = new ArrayList<Course>();
        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ò)展父類的功能,但不能改變父類原有的功能。
里氏替換原則意思說,在軟件中將一個(gè)基類對(duì)象(父類)替換成它的子類對(duì)象,程序?qū)⒉粫?huì)產(chǎn)生任何錯(cuò)誤和異常,反過來則不成立,
如果一個(gè)軟件實(shí)體使用的是一個(gè)子類對(duì)象的話,那么它不一定能夠使用基類對(duì)象。里氏代換原則是實(shí)現(xiàn)開閉原則的重要方式之一,
由于使用基類對(duì)象的地方都可以使用子類對(duì)象,因此在程序中盡量使用基類類型來對(duì)對(duì)象進(jìn)行定義,而在程序運(yùn)行時(shí)再確定其子類
類型,用子類對(duì)象來替換父類對(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、定義

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

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

新聞標(biāo)題:java軟件設(shè)計(jì)七大原則的定義
轉(zhuǎn)載來源:http://muchs.cn/article0/ihihoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、云服務(wù)器、定制網(wǎng)站、Google、品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名