设计模式-组合模式
来源:互联网 发布:网络漏洞扫描工具 编辑:程序博客网 时间: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
- 设计模式:组合模式
- 设计模式-----组合模式
- 设计模式 组合模式
- 设计模式--组合模式
- 设计模式---组合模式
- 【设计模式】组合模式
- 设计模式 - 组合模式
- 设计模式----组合模式
- 设计模式 - 组合模式
- 设计模式:组合模式
- 设计模式 - 组合模式
- 设计模式-组合模式
- 设计模式 - 组合模式
- 【设计模式】组合模式
- 设计模式--组合模式
- 设计模式-组合模式
- 设计模式:组合模式
- 设计模式-----组合模式
- L6218E: Undefined symbol __BASEPRICONFIG
- android 导入项目 项目中文字乱码问题
- 【南阳理工OJ】2--括号配对问题(栈与队列)
- 分布式服务框架之服务化最佳实践
- gitbook 一次安装之旅
- 设计模式-组合模式
- 低价购买
- 关于公司招聘的一些思考
- Java程序员的成长之路
- VC2010使用正则表达式
- MVP+Dagger2+Rxjava+Retrofit+GreenDao 开发的小应用,包含新闻、图片、视频3个大模块,代码封装良好
- pat-basic-1042-c语言
- CCF WC2017 & THU WC2017 旅游记
- 让 sudo 会话时间随心所欲