- 浏览: 931862 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
接口的作用是什么?定义共性 组合模式:主要是 用来描述整体与部分的关系,用的最多的地方就是树形结构,我们先来说说组合模式的几个角色: 抽象构件角色(Component):定义参加组合的对象的共有方法和属性,可以定义一些默认的行为或属性; 比如我们例子中的getInfo 就封装到了抽象类中。 叶子构件(Leaf):叶子对象,其下再也没有其他的分支。 树枝构件(Composite):树枝对象,它的作用是组合树枝节点和叶子节点; 组合模式有两种模式,透明模式和安全模式,这两个模式有什么区别呢 组合模式的优点有哪些呢?第一个优点只要是树形结构,就要考虑使用组合模式,这个一定记住,只 要是要体现局部和整体的关系的时候,而且这种关系还可能比较深,考虑一下组合模式吧。组合模式有一 个非常明显的缺点:使用了实现类而不是接口,违背了面向接口编程
package com.createtype.desginpatterns.composite3; /** * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you * all. 普通员工很简单,就写一个构造函数就可以了 */ public class Leaf extends Corp { // 就写一个构造函数,这个是必须的 public Leaf(String _name, String _position, int _salary) { super(_name, _position, _salary); } } package com.createtype.desginpatterns.composite3; /** * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you * all. 定义一个公司的人员的抽象类 */ @SuppressWarnings("all") public abstract class Corp { // 公司每个人都有名称 private String name = ""; // 公司每个人都职位 private String position = ""; // 公司每个人都有薪水 private int salary = 0; // 父节点是谁 private Corp parent = null; /* * 通过接口的方式传递,我们改变一下习惯,传递进来的参数名以下划线开始 这个在一些开源项目中非常常见,一般构造函数都是这么定义的 */ public Corp(String _name, String _position, int _salary) { this.name = _name; this.position = _position; this.salary = _salary; } // 获得员工信息 public String getInfo() { String info = ""; info = "姓名:" + this.name; info = info + "\t职位:" + this.position; info = info + "\t薪水:" + this.salary; return info; } // 设置父节点 protected void setParent(Corp _parent) { this.parent = _parent; } // 得到父节点 public Corp getParent() { return this.parent; } } package com.createtype.desginpatterns.composite3; import java.util.ArrayList; /** * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you * all. 组装这个树形结构,并展示出来 您的设计模式 第 166 页 */ @SuppressWarnings("all") public class Client { public static void main(String[] args) { // 首先是组装一个组织结构出来 Branch ceo = compositeCorpTree(); // 首先把CEO的信息打印出来: System.out.println(ceo.getInfo()); // 然后是所有员工信息 System.out.println(getTreeInfo(ceo)); } // 把整个树组装出来 public static Branch compositeCorpTree() { // 首先产生总经理CEO Branch root = new Branch("王大麻子", "总经理", 100000); // 把三个部门经理产生出来 Branch developDep = new Branch("刘大瘸子", "研发部门经理", 10000); Branch salesDep = new Branch("马二拐子", "销售部门经理", 20000); Branch financeDep = new Branch("赵三驼子", "财务部经理", 30000); // 再把三个小组长产生出来 Branch firstDevGroup = new Branch("杨三乜斜", "开发一组组长", 5000); Branch secondDevGroup = new Branch("吴大棒槌", "开发二组组长", 6000); // 把所有的小兵都产生出来 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", "销售人员", 5000); Leaf i = new Leaf("i", "销售人员", 4000); Leaf j = new Leaf("j", "财务人员", 5000); Leaf k = new Leaf("k", "CEO秘书", 8000); Leaf zhengLaoLiu = new Leaf("郑老六", "研发部副经理", 20000); // 开始组装 // CEO下有三个部门经理和一个秘书 root.addSubordinate(k); root.addSubordinate(developDep); root.addSubordinate(salesDep); root.addSubordinate(financeDep); // 研发部经理 developDep.addSubordinate(zhengLaoLiu); developDep.addSubordinate(firstDevGroup); developDep.addSubordinate(secondDevGroup); // 看看开发两个开发小组下有什么 firstDevGroup.addSubordinate(a); firstDevGroup.addSubordinate(b); firstDevGroup.addSubordinate(c); secondDevGroup.addSubordinate(d); secondDevGroup.addSubordinate(e); secondDevGroup.addSubordinate(f); // 再看销售部下的人员情况 salesDep.addSubordinate(h); salesDep.addSubordinate(i); // 最后一个财务 financeDep.addSubordinate(j); return root; } // 遍历整棵树,只要给我根节点,我就能遍历出所有的节点 public static String getTreeInfo(Branch root) { ArrayList<Corp> subordinateList = root.getSubordinate(); // 做了修改 String info = ""; for (Corp s : subordinateList) { // 做了修改 if (s instanceof Leaf) { // 是员工就直接获得信息 info = info + s.getInfo() + "\n"; } else { // 是个小头目 info = info + s.getInfo() + "\n" + getTreeInfo((Branch) s); } } return info; } } package com.createtype.desginpatterns.composite3; import java.util.ArrayList; /** * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you * all. 节点类,也简单了很多 */ 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); corp.setParent(this); // 设置父节点 } // 我有哪些下属 public ArrayList<Corp> getSubordinate() { return this.subordinateList; } }
- DesignPatterns.rar (120.8 KB)
- 下载次数: 2
发表评论
-
关于Java 23种设计模式的有趣见解
2013-08-10 18:01 981关于Java 23种设计模式的有趣见解 [来源] 51CT ... -
Java中常用的设计模式(转)
2013-01-30 12:30 1075下面是我对一些常用设计模式的理解: 模式分为:行为模 ... -
工厂模式,抽象工厂模式,简单工厂的区别
2012-10-10 21:35 9281.抽象工厂模式与工厂方法模式的最大区别就在于,工 ... -
java设计模式之常用设计模式分析
2012-06-05 09:09 1237常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
java设计模式之责任链模式(行为模式 )
2012-06-04 14:31 1078(11).责任链模式: 文章链接:http:// ... -
java设计模式之观察着模式(行为模式)
2012-06-04 14:28 951(10).观察着模式Observer 文章链接:ht ... -
java设计模式之适配器模式(结构型模式)
2012-06-04 14:26 644(9).适配器模式 文章链接:http://chjl2 ... -
java设计模式之动态代理模式(结构型模式)
2012-06-04 14:24 1119(8).代理模式: 文章 ... -
java设计模式之代理模式(结构型模式)
2012-06-04 14:22 1019(8).代理模式: ... -
java设计模式之——装饰模式结(构型模式)
2012-06-03 19:34 967三.例子代码:使用装饰 ... -
java设计模式之缺省适配器模式(构型模式)
2012-06-03 19:31 1347缺省适配器模式:文章链接:http://jzinfo.itey ... -
java设计模式之模板方法模式(行为模式 )
2012-06-03 19:03 1080package com.createtype.desginpa ... -
java设计模式之——策略模式(行为模式 )
2012-06-03 16:54 1021文章链接:http://yangguangfu ... -
java设计模式之简单工厂模式(创建型模式)
2012-06-01 00:01 1224/** * ## 具体产品(Con ... -
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
2012-05-31 23:59 1260文章链接: http://blog.csdn.net/ ... -
java设计模式之抽象工厂模式(创建型模式)
2012-05-31 23:57 1103package com.createtype.desgi ... -
java设计模式之工厂方法模式(创建型模式)
2012-05-31 23:56 913package com.createtype.desg ... -
java设计模式之单例模式(创建型模式)
2012-05-30 17:48 1030单列模式: 优点 ... -
java中设计模式分类
2012-05-01 18:31 1115常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
Bridge模式(桥接模式)
2012-04-17 22:19 922文章链接:http://airu.itey ...
相关推荐
第4章GoF-StructuralDesignPatterns结构型设计模式 95 4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 ...
第4章GoF-StructuralDesignPatterns结构型设计模式 95 4.1AdapterPattern(适配器模式) 96 4.1.1定义 96 4.1.2现实中的实例——电脑电源适配器 97 4.1.3C#实例——化学数据银行 98 4.1.4Java实例——清洁系统 ...
基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
结构型模式:这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)过滤器模式(Filter、Criteria Pattern)组合...
软件对象是现实世界对象的模式化产物,他们也有状态 和行为。软件对象把状态用数据表示并存放在变量里,而行为则用方法实现。实际上,软件 对象还包括了数据结构和使用这些数据结构的代码。因此也可以说:软件对象是...
本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址: 23种模式java实现...
目录 一、 JavaSE 部分 1、 Java 基础 ...1、 结构型模式 ①代理模式 ②装饰模式 ③适配器模式 2、 创建型模式 ①单例模式 3、 行为型模式 ①策略模式 ②观察者模式 4、 所有模式汇总 十、 场景题 十一、 UML
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
设计模式和常用的设计模式.mp4 │ Java面试题16.http get post请求的区别.mp4 │ Java面试题17.说说你对Servlet的理解.mp4 │ Java面试题18.Servlet的生命周期.mp4 │ Java面试题19.forward和redirect的区别.mp4 │ ...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 生成器 将表数据生成SQL脚本的存储过程 直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...