標簽:osi class 消費 junit單元測試 static mamicode rac tde esc
1、簡介
組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象。用來表示部分以及整體層次。這周類型的設計模式屬于結構型模式,創建了對象組的樹形結構。
這種模式創建了一個包含自己對象組的類,提供了修改相同對象組的方式。
組合模式類似樹形結構,上一層節點的包含多個下一層的節點,而下一層的節點只依附于一個上一層的節點。
2、類圖分析
主要分為以下三個角色:
3、代碼實例
1 /** 2 * @author it-小林 3 * @desc 店鋪抽象類 4 * @date 2021年07月28日 18:24 5 */ 6 public abstract class Market { 7 String name; 8 9 public abstract void add(Market market); 10 11 public abstract void remove(Market market); 12 13 public abstract void payByCard(); 14 }
1 /** 2 * @author it-小林 3 * @desc 分店 下面可以有加盟店 4 * @date 2021年07月28日 18:27 5 */ 6 public class MarketBranch extends Market{ 7 //加盟店列表 8 List<Market> marketList = new ArrayList<>(); 9 10 public MarketBranch(String name){ 11 this.name = name; 12 } 13 14 @Override 15 public void add(Market market) { 16 marketList.add(market); 17 } 18 19 @Override 20 public void remove(Market market) { 21 market.remove(market); 22 } 23 24 @Override 25 public void payByCard() { 26 System.out.println(name + "消費,積分已累加入該會員卡"); 27 for (Market m : marketList) { 28 m.payByCard(); 29 } 30 31 } 32 }
1 /** 2 * @author it-小林 3 * @desc 4 * @date 2021年07月28日 18:30 5 */ 6 public class MaketJoin extends Market{ 7 public MaketJoin(String name){ 8 this.name = name; 9 } 10 11 @Override 12 public void add(Market market) { 13 14 } 15 16 @Override 17 public void remove(Market market) { 18 19 } 20 21 @Override 22 public void payByCard() { 23 System.out.println(name + "消費,積分已累加入該會員卡"); 24 } 25 }
1 /** 2 * @author it-小林 3 * @desc 4 * @date 2021年07月28日 18:34 5 */ 6 public class TestDemo { 7 public static void main(String[] args) { 8 Market root = new MarketBranch("總店"); 9 Market szBranch = new MarketBranch("深圳分店"); 10 Market ftJoin = new MaketJoin("福田加盟店"); 11 Market nsJoin = new MaketJoin("南山加盟店"); 12 13 szBranch.add(ftJoin); 14 szBranch.add(nsJoin); 15 root.add(szBranch); 16 root.payByCard(); 17 } 18 }
運行結果
4、應用場景
5、優缺點
優點:
缺點:
標簽:osi class 消費 junit單元測試 static mamicode rac tde esc
原文地址:https://www.cnblogs.com/linruitao/p/15067817.html