新聞中心
本篇內(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、代碼演示

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


咨詢
建站咨詢
