- 浏览: 428529 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (170)
- java (77)
- javascript (5)
- jsp (1)
- servlet (6)
- struts (8)
- hibernate (3)
- spring (4)
- ajax (5)
- jquery (3)
- apache cxf (0)
- ext.js (1)
- hadoop (0)
- android (0)
- html5 (2)
- linux (5)
- flex (1)
- tomcat (1)
- jboss (0)
- nginx (0)
- mysql (16)
- sql server (3)
- oracle (4)
- div+css (0)
- mybatis (4)
- design patterns (22)
- xml (2)
- postgresql (3)
- velocity (1)
- freemarker (1)
- kendo-ui (2)
- ibatis (1)
- socket (1)
- C and C++ (1)
- C# (2)
- 程序设计----算法 (0)
- jersey (1)
- dd (0)
- perl (1)
- shell (0)
最新评论
-
书策稠浊:
兄弟,这tm是Java?
java调用百度地图和谷歌地图 -
fengyunlouyanyu:
jquery----删除指定id的div下的img -
yangjianzhouctgu:
Neoman 写道hi,我看你引入了kendo.web.min ...
kendo-ui中kendoGrid的用法 -
Neoman:
hi,我看你引入了kendo.web.min.js 这个js, ...
kendo-ui中kendoGrid的用法 -
yangjianzhouctgu:
llscp 写道这是JS吧...对的呀
java调用百度地图和谷歌地图
该设计模式是以公司的组织结构为背景的
Crop.java代码如下:
Leaf.java代码如下:
Branch.java代码如下:
Client.java代码如下:
运行结果如下:
Crop.java代码如下:
package com.designPattern.composite; public abstract class Corp { private String name =""; private String position = ""; private int salary = 0; public Corp(String name,String position,int salary){ this.name = name; this.position = position; this.salary = salary; } public String getInfo(){ String info = "姓名:"+this.name+"\t职位:"+this.position+"\t薪水:"+this.salary; return info; } }
Leaf.java代码如下:
package com.designPattern.composite; public class Leaf extends Corp{ public Leaf(String name, String position, int salary) { super(name, position, salary); } }
Branch.java代码如下:
package com.designPattern.composite; import java.util.ArrayList; public class Branch extends Corp{ ArrayList<Corp> subordinateList = new ArrayList<Corp>(); public Branch(String name, String position, int salary) { super(name, position, salary); } public void addSubordinate(Corp corp){ this.subordinateList.add(corp); } public ArrayList<Corp> getSubordinate(){ return this.subordinateList; } }
Client.java代码如下:
package com.designPattern.composite; import java.util.ArrayList; public class Client { public static void main(String[] args) { Branch ceo = compositeTree(); System.out.println(ceo.getInfo()); System.out.println(getTreeInfo(ceo)); } public static Branch compositeTree(){ Branch root = new Branch("老大","总经理",100000); Branch developDep = new Branch("老刘","研发部经理",10000); Branch salesDep = new Branch("老马","销售部经理",20000); Branch financeDep = new Branch("老赵","财务部经理",30000); Branch firstDevGroup = new Branch("杨组长","研发一组组长",8000); Branch secondDevGroup = new Branch("吴组长","研发二组组长",8000); Leaf a = new Leaf("a","开发人员",2000); Leaf b = new Leaf("b","开发人员",2000); Leaf c = new Leaf("c","开发人员",2000); Leaf d = new Leaf("d","开发人员",2000); Leaf e = new Leaf("e","开发人员",2000); Leaf f = new Leaf("f","开发人员",2000); Leaf g = new Leaf("g","开发人员",2000); Leaf h = new Leaf("h","开发人员",2000); Leaf i = new Leaf("i","开发人员",2000); Leaf k = new Leaf("k","销售人员",2000); Leaf l = new Leaf("l","销售人员",2000); Leaf j = new Leaf("j","财务人员",2000); Leaf m = new Leaf("m","财务人员",2000); Leaf n = new Leaf("n","CEO秘书",2000); Leaf p = new Leaf("陆副经理","研发部副经理",2000); firstDevGroup.addSubordinate(a); firstDevGroup.addSubordinate(b); firstDevGroup.addSubordinate(c); firstDevGroup.addSubordinate(d); secondDevGroup.addSubordinate(e); secondDevGroup.addSubordinate(f); secondDevGroup.addSubordinate(g); secondDevGroup.addSubordinate(h); secondDevGroup.addSubordinate(i); salesDep.addSubordinate(k); salesDep.addSubordinate(l); financeDep.addSubordinate(j); financeDep.addSubordinate(m); developDep.addSubordinate(firstDevGroup); developDep.addSubordinate(secondDevGroup); developDep.addSubordinate(p); root.addSubordinate(n); root.addSubordinate(salesDep); root.addSubordinate(financeDep); root.addSubordinate(developDep); return root; } public static String getTreeInfo(Branch root){ ArrayList<Corp> subordinateList = root.getSubordinate(); String info = ""; for(Corp c:subordinateList){ if(c instanceof Leaf){ info = info +c.getInfo()+"\n"; }else{ info = info +c.getInfo()+"\n"+getTreeInfo((Branch)c); } } return info; } }
运行结果如下:
姓名:老大 职位:总经理 薪水:100000 姓名:n 职位:CEO秘书 薪水:2000 姓名:老马 职位:销售部经理 薪水:20000 姓名:k 职位:销售人员 薪水:2000 姓名:l 职位:销售人员 薪水:2000 姓名:老赵 职位:财务部经理 薪水:30000 姓名:j 职位:财务人员 薪水:2000 姓名:m 职位:财务人员 薪水:2000 姓名:老刘 职位:研发部经理 薪水:10000 姓名:杨组长 职位:研发一组组长 薪水:8000 姓名:a 职位:开发人员 薪水:2000 姓名:b 职位:开发人员 薪水:2000 姓名:c 职位:开发人员 薪水:2000 姓名:d 职位:开发人员 薪水:2000 姓名:吴组长 职位:研发二组组长 薪水:8000 姓名:e 职位:开发人员 薪水:2000 姓名:f 职位:开发人员 薪水:2000 姓名:g 职位:开发人员 薪水:2000 姓名:h 职位:开发人员 薪水:2000 姓名:i 职位:开发人员 薪水:2000 姓名:陆副经理 职位:研发部副经理 薪水:2000
发表评论
-
设计模式----中介者模式(demiator pattern)
2013-07-21 22:55 932AbstractMediator.java代码如下: pa ... -
设计模式----原型模式(prototype pattern)
2013-07-21 22:51 638AdvTemplate.java代码如下: package ... -
设计模式----状态模式(state pattern)
2013-07-21 22:48 1204LiftState.java代码如下: package ... -
设计模式----访问者模式(visitor pattern)
2013-07-21 22:44 973IVisitor.java代码如下: package co ... -
设计模式----观察者模式(observer)
2013-07-20 19:53 1071这里采用两种方式实现观察者模式:第一种方式为完全自己写, ... -
设计模式----迭代器模式(Iterator)
2013-07-20 15:59 917IProject.java代码如下: package co ... -
设计模式----装饰者模式(decorator pattern)
2013-07-15 09:08 1027SchoolReport.java代码如下: packag ... -
设计模式----命令模式(command pattern)
2013-07-15 09:09 956Group.java代码如下: pa ... -
设计模式----桥梁模式(bridge pattern)
2013-07-14 22:21 1182Product.java代码如下: package com ... -
设计模式----模板方法模式(template method pattern)
2013-07-14 17:00 1147HummerModel.java代码如下: packag ... -
设计模式----适配器模式(adapter)
2013-07-14 13:37 865IUserInfo.java代码如下: package c ... -
设计模式----门面模式(facade)
2013-07-14 13:30 946LetterProcess.java代码如下 ... -
设计模式----抽象工厂模式(abstract factory pattern)
2013-07-13 23:09 913Human.java代码如下: package com. ... -
设计模式----工厂方法模式(factory method pattern)
2013-07-10 22:19 1081给定一个工厂类,用这个工厂类造出一堆对象来,这些对象对应的类实 ... -
设计模式----多例模式(Multition)
2013-07-02 22:47 1033Emperor.java 代码如下: ... -
设计模式----单例模式(singleton)
2013-06-30 22:17 757单例就是唯一的意思。 第一种单例实现方式(在多线程环境中存在 ... -
设计模式----代理模式(proxy)
2013-06-30 22:02 960代理模式主要使用了java ... -
设计模式----策略模式(strategy)
2013-06-29 22:17 1088本文参考别人设计模式的一个例子。 关于诸葛亮的三个锦囊妙计的 ... -
装饰着模式(decorator)
2012-09-09 21:51 1008一下代码就是运用了装饰者模式: package com.ba ... -
观察者模式(observer)
2012-09-09 19:36 943设计模式中观察者模式的实现有很多方式,这里列出两种实现方式 1 ...
相关推荐
c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...
组合模式是一种行为设计模式,属于面向对象设计中的结构型模式,其主要目的是为了建立一种对象树形结构,这种结构能够使客户端代码以统一的方式处理单个对象和对象的组合。在组合模式中,我们通常会定义一个基类,...
组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户端可以统一对待单个对象和对象组合。在组合模式中,有两种基本类型的对象:叶...
代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式...组合模式(Composite Pattern)、观察者模式(Observer Pattern)、责任链模式(Chain of Responsibility Pattern)、访问者模式(Visitor ...
组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分-整体关系,使得我们能够像处理单个对象一样处理整个集合。在Java中,这种模式的应用可以帮助我们简化对复杂对象层次结构的操作,同时保持接口的...
在众多设计模式中,组合实体(Composite)模式是一种结构型模式,它允许我们以树形结构来表示部分与整体的关系,使得用户可以一致地处理单个对象和对象组合。在iOS开发中,组合实体模式尤其有用,因为它简化了复杂...
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责。 - 享元模式(Flyweight):使用共享对象,有效地支持大量细...
组合模式,也称为树形模式,是一种结构型设计模式,它允许我们表示部分-整体层次结构,使得客户端代码可以统一地处理单个对象和对象集合。这种模式将对象组织成树形结构,允许用户对部分或整个树进行操作,简化了...
包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)和代理模式(Proxy)。这些模式可以帮助我们更好地组织代码,实现...
一、概述 在Java中,组合模式用于将对象组合成树结构,以表示...在软件工程中,组合模式是一种分区设计模式。组合模式描述了一组对象应被视为单个对象的实例来处理。组合的意图是将对象“组合”成树结构,以表示部分
组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分与整体的关系,使得我们能够以统一的方式来处理单个对象和对象的组合。在组合模式中,单个对象和组合对象都被视为同一类型,这使得客户端代码可以对...
结构型模式则关注如何将类或对象组合成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)和组合模式(Composite)。这些模式可以帮助我们处理类与类之间的...
例如,装饰器模式可以和组合模式(Composite)结合,用于动态地增加或减少对象的功能。同时,王翔可能会讨论如何在实际项目中选择和应用设计模式,以及避免陷入过度设计的陷阱。 在阅读《设计模式》.pdf的过程中,...
7. 组合模式(Composite): 组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。C#中的组合模式允许用户对单个对象和组合对象进行一致的操作,提供了一种统一的接口。 8. 装饰器模式(Decorator): ...
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,提供比继承更...
组合模式是一种结构型设计模式,它允许我们使用树形结构来表示部分与整体的关系,使得我们可以在统一的接口下处理单个对象和对象的组合。这个模式在处理类似目录树或者组织架构这样的数据时非常有用。在组合模式中,...
2. 结构型模式:关注如何将类或对象组合成更大的结构,例如适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)和代理模式...
### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...