设计模式-组合模式

来源:互联网 发布:网络漏洞扫描工具 编辑:程序博客网 时间:2024/03/28 20:15

当需求是体现部分与整体结构,用户可以忽略组合对象与单个对象的不同,统一使用组合结构中的所有对象时,可以使用组合模式.

比如:加盟连锁店,在总店消费和加盟店消费可以同样获得积分和参加活动.

java实现代码如下

package com.liu.pattern9;import java.util.ArrayList;public class Composite {public static void main(String[] args) {// TODO Auto-generated method stubStore branch = new Branch("上海总店");Store join1 = new Join("川沙加盟店");Store join2 = new Join("南汇加盟店");branch.add(join1);branch.add(join2);branch.consume();}}interface Store{public void add(Store store);public void remove(Store store);public void consume();}class Branch implements Store{private ArrayList<Store> list = new ArrayList<Store>();private String name;public Branch(String name){this.name = name;}@Overridepublic void add(Store store) {// TODO Auto-generated method stublist.add(store);}@Overridepublic void remove(Store store) {// TODO Auto-generated method stublist.remove(store);}@Overridepublic void consume() {// TODO Auto-generated method stubSystem.out.println(name+"进行消费");for(Store store : list){store.consume();}}}class Join implements Store{private ArrayList<Store> list = new ArrayList<Store>();private String name;public Join(String name){this.name = name;}@Overridepublic void add(Store store) {}@Overridepublic void remove(Store store) {}@Overridepublic void consume() {// TODO Auto-generated method stubSystem.out.println(name+"进行消费");}}


 

c#代码如下

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace com.liu.pattern9{    class Composite    {        static void Main(string[] args)        {            Store branch = new Branch("上海总店");            Store join1 = new Join("川沙加盟店");            Store join2 = new Join("南汇加盟店");            branch.Add(join1);            branch.Add(join2);            branch.Consume();            System.Console.ReadKey();        }    }    interface Store{    void Add(Store store);    void Remove(Store store);    void Consume();    }    class Branch : Store{    private ArrayList list = new ArrayList();    private String name;    public Branch(String name){    this.name = name;    }    public void Add(Store store) {    // TODO Auto-generated method stub    list.Add(store);    }    public void Remove(Store store) {    // TODO Auto-generated method stub    list.Remove(store);    }    public void Consume() {    // TODO Auto-generated method stub    System.Console.WriteLine(name+"进行消费");    foreach(Store store in list){    store.Consume();    }    }    }    class Join : Store{    private ArrayList list = new ArrayList();    private String name;    public Join(String name){    this.name = name;    }    public void Add(Store store) {    }    public void Remove(Store store) {    }    public void Consume() {    // TODO Auto-generated method stub            System.Console.WriteLine(name + "进行消费");    }    }}


 

0 0
原创粉丝点击