uml
文章平均质量分 94
iteye_12150
这个作者很懒,什么都没留下…
展开
-
UML中关联、组合与聚合等关系的辨析
以前学习面向对象的时候,常听到介绍对象之间的各种关系,常见的有关联,组合与聚合。关联:关联是一种最普遍和常见的关系形式。一般是指一个对象可以发消息给另外一个对象。典型的实现情况下指某个对象有一个指针或者引用指向一个实体变量,当通过方法的参数来传递或者创建本地变量来访问这种情况也可以称之为关联。典型的代码如下:class A{ private B itemB;} 也可能...2012-01-04 00:13:07 · 315 阅读 · 0 评论 -
再回首Observer Pattern
早些时候曾经写过一篇关于observer pattern的文章,当时是基于.net平台的event特性理解做了一点解读。时过境迁,一下又过去三年多了。再回过头来看这些东西的时候,感觉当初的说法还是过于教条和书面化,内容的深度还是不够。一个想法如果不是从一种严格的教科书定义来看observer pattern的话,我们可以从一些示例中引申出这种思想来。我们可以从一个报纸订阅发布的这个示例来考...原创 2012-06-19 00:04:35 · 87 阅读 · 0 评论 -
从optional/named arguments所想到的
前言 有的时候我们学习某一种语言的时候,会禁不住和其他一些自己熟悉的语言针对某些特性做一番比较。不同的语言带来的特性在某些更深的层次有它的设计思想。在解决一些问题的时候也带来一种独特的思路。这里从python的optional arguments特性开始引申讨论在java中对象创建扩展中一系列的问题和解决思路。这些解决的方法里揉和了一些设计模式的套路。到最后,针对这些实现来重新思考设...原创 2013-09-16 23:53:12 · 179 阅读 · 0 评论 -
chain of responsibility模式一:理解
引子 假定我们设想某一个场景,在一个工厂里我们需要经过一系列的工序要生产加工产品。这些生产工序在工厂中我们一般称之为流水线。这些流水线有一个比较有意思的特性,就是每一个步骤是针对生产过程中某一个方面起作用,比如对产品的锻造、抛光,包装等。同时他们所进行的所有行为都是围绕着同一个产品,有严格的顺序要求。做完某一步之后就接着到下一步。模式的基本概念 前面的工厂流...原创 2012-10-07 01:29:29 · 152 阅读 · 0 评论 -
composition over inheritance及实例分析
前言 相信学过一些OO的人都对几个基本的面向对象设计原则印象深刻,比如面向抽象、liskov、开闭原则等。这里重点讨论一下composition over inheritance的思想和jdk本身设计中的几个反例。希望通过这些分析能够有一个更深刻的理解而不至于浮于表面。概念及对比 关于composition以及inheritance的概念其实再简单不过了。我们在创建的某个...2013-09-08 23:22:10 · 777 阅读 · 0 评论 -
Composite pattern和树
一切从,那一段代码开始的 开始我们考虑这样一个问题,就是假定我们要写一个方法来遍历一个目录里所有的文件。因为目录里面可能还含有子目录,我们可能就需要用到循环,递归等这样的思路。一个典型的思路如下:1. 首先列出该文件夹里所有内容。2. 遍历里面所有的元素,如果该元素为纯文件,则显示文件名;否则,则递归调用该函数。按照以上的思路,可以写出如下的一段简单的代码: voi...原创 2012-06-10 01:07:52 · 112 阅读 · 0 评论 -
Decorator Pattern和Java IO
Decorator之前在Java程序中,我们常会在IO的时候用到类似于如下的代码: InputStream in = new BufferedInputStream( new FileInputStream("test.txt")); 从代码本身的直观意义来说,这部分代码很好理解。1.使用FileInputStream打...原创 2012-05-05 23:00:03 · 189 阅读 · 0 评论 -
java collections集合类总结:概述
简介 在java的包java.util和java.util.concurrent里面定义了java的集合类框架。我们大部分日常使用到的数据结构都可以在这里找到一个对应的实现。在以往的学习过程中可能会接触过一些具体的结构。但是对于java集合类框架来说,他里面包含有哪些类别的结构呢?对于不同的结构,他们分别适用于哪些应用场景?集合类框架中这些类之间是否有着某种关系呢?在这里,我们尝试对...原创 2013-06-29 17:59:24 · 249 阅读 · 0 评论 -
从Iterator Pattern说起
疑惑之初:记得初次编程的时候,看到书上说过当要想实现对某个对象进行迭代器访问的方式时,需要实现一些特定的接口。比如说我们想用如下的一段代码: for(ListItem item : itemSet) item.xxx(); 那么我们就需要实现java.lang.Iterable<T>接口。这个接口包含的方法细节如下: public interfa...原创 2012-03-30 01:16:54 · 157 阅读 · 0 评论 -
Java Comparable & Comparator
从排序说起 在一些数组或者列表排序的场景中,需要对一系列的元素按照某种要求排序。典型的情况就是按照自然顺序排序。我们常用到的就是比如Collection.sort()和Arrays.sort()这几个方法。Collections.sort()和Arrays.sort()两个方法的具体签名形式如下: public static <T extends Comparable<...2012-03-04 13:30:50 · 90 阅读 · 0 评论 -
java stack的详细实现分析
简介 我们最常用的数据结构之一大概就是stack了。在实际的程序执行,方法调用的过程中都离不开stack。那么,在一个成熟的类库里面,它的实现是怎么样的呢?也许平时我们实践的时候也会尝试着去写一个stack的实现玩玩。这里,我们就仔细的分析一下jdk里的详细实现。Stack 如果我们去查jdk的文档,我们会发现stack是在java.util这个包里。它对应的一个大致的...原创 2013-03-07 10:18:33 · 3161 阅读 · 1 评论