23種設計模式 10 組合模式

2021-09-29 05:57:35 字數 2225 閱讀 8594

一、常規實現:不安全

/// /// 產品類

///

public abstract class product

public string name

/// /// 每個產品都可以工作

///

public abstract void work();

/// /// 每個產品都可以往裡面再新增子產品

/// 至於有些產品不能再新增子產品,這裡我們一會會詳細說,大家先記住這一點

///

public abstract void add(product product);

/// /// 每個產品都可以移除子產品,同上

///

public abstract void remove(product product);

}/// /// cpu產品

///

public class cpu : product

public override void work()

/// /// 由於cpu已經是很小的零件了,不能再有子零件,所有不會有新增和刪除的方法,所以先模擬丟擲異常

/// 這裡大家先這麼看,後續我們會詳細講解這裡

///

///

public override void add(product product)

public override void remove(product product)

}/// /// 記憶體條產品

///

public class memorybar : product

public override void work()

public override void add(product product)

public override void remove(product product)

}/// /// 電腦產品

///

public class computer : product

private listchildproduct = new list();

public override void work()

public override void add(product product)

public override void remove(product product)

}

private static void test1()

上述執行完,大家應該也看到了有點不足:

有的產品不能有子零件,但是還是會有新增零件和移除零件的方法,因為是從產品類繼承過來的嘛

這樣就導致了不安全,因為客戶端覺得有這個方法那肯定就是可以使用的,結果不能使用

所以,一種更安全的方式就是:

將新增零件和移除零件的方法只有複雜產品我們才會加上,其他的都沒有

有兩種方式加:

1.在複雜產品類中多定義兩個方法(新增和刪除)

2.定義乙個新增產品,刪除產品介面,複雜產品需要實現這些介面(規範)

二、將複雜和簡單區分開:安全

public abstract class productnew

public string name

public abstract void work();

}public class cpunew : productnew

public override void work()

}public class memorybarnew : productnew

public override void work()

}public class computernew : productnew, icomplexproduct

public override void work()

public void add(productnew product)

public void remove(productnew product)

}public inte***ce icomplexproduct

class program

private static void test1()

private static void test2()

}

設計模式(10) 組合模式

什麼是組合模式?組合模式是一種結構型模式,把多個物件組合為乙個整體,類似於在公司中,每個人都是員工,但是員工有上下級的關係,整個級別組合一起為公司整體,組合模式是一種簡單的設計模式 如何實現?public class employee public void add employee e publi...

10組合模式

組合模式 設計模式其實很簡單 筆記 定義 將物件組成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。理解 樹和子樹,即整體與部分。在樹形結構中,部分和整體有著類似或相同的結構,所以可以將部分和 整體一致對待 樹中分支節點與葉子節點的抽象父類 publi...

(10)組合模式

組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。組合模式說白了就是乙個樹形結構。如某 的商品分類,如省市區等結構,這些都是樹形結構,都屬於組合模式。import j a.util.arraylist import j a.util.list 組合 public class demo pub...