全部博文(121)
分类: 项目管理
2008-05-19 19:13:22
//The Interfaces
interface MProvides { void func(); }
interface MRequires { int getValue(); }//The Mixinclass Mixin implements MProvides { public Mixin(MRequires parent) { this.parent = parent; } public void func() { System.out.println("The value is: " + parent.getValue()); } private final MRequires parent; }//The Class Used as the BaseClass Parent { public P(int value ) { this.val = value; } public int getValue() { return this.val; } public toString() { return "" + this.val; } private int val; }//The Result of Mixingclass Child extends Parent implements MRequires, MProvides {public Child(int value) { super(value); this.mixin = new Mixin(this); } public void func(){ mixin.func(); } private final MProvides mixin; }三.Aggregation,Composition,Acquaintance,Association,Dependence,Reference的关系:1.Aggregation:一个对象拥有另一个对象,仅强调"拥有",就如创建一个公司时可以拥有一些雇员但不是必须的,公司破产了,不存在了,但雇员还是存在的.2.Composition:批一个对象是另一个对象的一部分,强调"不可分割",两个对象有相同的生命周期.就如创建一个人的时候,不可以丢掉一个人的心脏,人死了,心脏也就消失了.聚合与组合的代码表现形式是一样的,都可以表现为以下的形式,它们仅仅具有语义上的区别:1public class Computer{
2 private CPU cpu;
3 public CPU getCPU(){
4 return cpu;
5 }
6 public void setCPU(CPU cpu){
7 this.cpu=cpu;
8 }
9 //开启电脑
10 public void start(){
11 //cpu运作
12 cpu.run();
13 }
14}
153.Dependence:是批一种使用关系,表现为一个对象仅仅是调用了另一个对象的服务.具有某种偶然性。比如说我要过河,没有桥怎么办,我就去借来一条小船渡过去。我与小船的关系仅仅是使用(借用)的关系。表现在代码上,为依赖的类的某个方法以被依赖的类作为其参数。或者是class A 的某个方法创造了 class B 的实例抑或对class B的静态方法的调用。如果A依赖于B,那意味着B的变化可能要求A也发生变化;1public class Person{
2 /**//** 划船 */
3 public void oarage (Boat boat){
4 boat.oarage();
5 }
6}
74.Association:是指一个结构关系,表现为一个对象能够获得另一个对象的实例引用并调用它的服务(既使用它)1 public class Company{
2 private Employee employee;
3 public Employee getEmployee(){
4 return employee;
5 }
6 public void setEmployee(Employee employee){
7 this.employee=employee;
8 }
9 //公司运作
10 public void run(){
11 employee.startWorking();
12 }
13}
145.Acquaintance:既可能是Association也可能是Dependence.6.Reference:指那些指向对象的类属性.实现Aggregation,Composition,Association时无可避免的要用引用,但实现Dependence是却不一定用到7.之间的关系:关联和依赖是同级的,组合是一种聚合,聚合是一种关联,引用则是相对独立的. 聚合与组合其实都是关联的特例,都是整体和部分的关系。他们的区别在于聚合的两个对象之间是可分离的,他们具有各自的生命周期。而组合往往表现为一种唇齿相依的关系。"关联本身即是一种依赖"当某个类被当作参数传递并且被当作结果返回的时候,或者被当作某个方法内的临时变量使用的时候,可以运用依赖关系,使用关联来表示一个拥有关系,而不是整体-部分关系。使用聚合来表示一个动态的整体-部分关系,而是用组合来表示一个静态的整体-部分关系。,"依赖是一种弱关联”。依赖和关联都是说一个类用到了另一个类。其区别在于一个是使用,一个是拥有。