依賴倒轉原則與合成復用原則---實例


依賴倒轉原則與合成復用原則

 

 

在一畫圖軟件中提供了多種大小不同的畫筆,並且可以給畫筆指定不同的顏色,某設計人員對畫筆進行了如上圖所示的設計。通過分析,可以發現增加畫筆的種類和顏色會使得系統中類的數目急劇增加,請根據合成復用原則和依賴倒轉原則對上述設計進行重構。

 

依賴倒轉原則程序要依賴於抽象接口,不要依賴於具體實現。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。

合成復用原則它要求在軟件復用時,要盡量先使用組合或者聚合等關聯關系來實現,其次才考慮使用繼承關系來實現

重構后的類圖:

 

依賴倒轉原則與合成復用原則:利用合成復用原則與依賴倒轉原則,根據Pen的大小與顏色編寫兩個抽象類SizeColor;底層具體類extends抽象類(泛化關系),高層Pen類由SizeColor聚合而來(聚合關系);

 

 

代碼實現:

型號抽象類

public abstract class Size {
public abstract void sizePen();
}

具體型號類

public class SmallPen extends Size{
//小型
public void sizePen() {
System.out.println("小型");
}
}
public class MiddlePen extends Size{
//中型
public void sizePen() {
System.out.println("中型");
}
}
public class BigPen extends Size{
//大型
public void sizePen() {
System.out.println("大型");
}
}

顏色抽象類

public abstract class Color {
public abstract void colorPen();
}

具體顏色類

public class GreenPen extends Color{ public void colorPen() { System.out.println("綠色"); } }

public class RedPen extends Color{

 
         

public void colorPen() {

 
         

System.out.println("紅色");

 
         

}

 
         

}

 

鋼筆

public class Pen {
//鋼筆
private Size size;
private Color color;
public Size getSize() {
 return size;
}
public void setSize(Size size) {
 this.size = size;
}
public Color getColor() {
 return color;
}
public void setColor(Color color) {
 this.color = color;
}
}

 

聚合鋼筆

public class MianClass {
public static void main(String[] args) {
//顏色大小隨意組合
Pen pen=new Pen();
//組合小型紅色鋼筆
pen.setSize(new SmallPen());
pen.setColor(new RedPen());
//組合大型綠色鋼筆
pen.setSize(new BigPen());
pen.setColor(new GreenPen());
}
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM