首页 > 代码库 > 【小话设计模式】类之间的关系

【小话设计模式】类之间的关系

4.组合(Composition) 

    定义:相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。如果是组合关系,如果整体被破坏则个体一定会被破坏,而聚合的个体则可能是被多个整体所共享的,不一定会随着某个整体的破坏而被破坏。

    符号带实心菱形实线箭头表示  

        1、合成关系是关联关系的一种,是比聚合关系还要强的关系。
        2、它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。


代码:

package com.ex.composition;
/**
 * 
 * 项目名称:uml   
 * 类名称:CPU   
 * 类描述:  电脑的一种运算器件
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-20 下午04:23:33    
 * @version 6.0   
 *
 */
public class CPU {
	 private String code;
	 private String name;
	 
	 public CPU(String code,String name){
	    	this.code = code;
	    	this.name = name;
	 }
}
package com.ex.composition;
/**
 * 
 * 项目名称:uml   
 * 类名称:Computer   
 * 类描述:一种开发工具电脑   
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-20 下午01:34:49    
 * @version 6.0   
 *
 */
public class Computer {
    private String code;
    private String name;
    private CPU cpu;
    
    //组合关系中的成员变量一般会在构造方法中赋值
    public Computer(String code,String name, CPU cpu){
    	this.code = code;
    	this.cpu = cpu;
    }
}

5.继承(Generalization) 

    定义:继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。通常所说的继承(特殊个体 is kind of 一般个体)关系。

    符号带空心箭头的实线线表示  

      箭头指向一般个体


代码:

package com.ex.generalization;
/**
 * 
 * 项目名称:uml   
 * 类名称:Animal   
 * 类描述:动物   
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:20:32    
 * @version 6.0   
 *
 */
public class Animal {
	
    public void eat() {
	}
    public void sleep() {
	}
}
package com.ex.generalization;
/**
 * 
 * 项目名称:uml   
 * 类名称:Bird   
 * 类描述:鸟   
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:20:49    
 * @version 6.0   
 *
 */
public class Bird extends Animal {
    public void fly(){
    	
    }
}

6.实现(Implementation) 

    定义:表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。

    符号:用虚线+空心箭头表示

      箭头指向接口


    代码:

package com.ex.implementation;
/**
 * 
 * 项目名称:uml   
 * 类名称:USB   
 * 类描述:USB接口
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:23:01    
 * @version 6.0   
 *
 */
public interface USB {
	 //接入电脑
	 public void connect();
	 //断开电脑
	 public void disConnect();
    
}
package com.ex.implementation;
/**
 * 
 * 项目名称:uml   
 * 类名称:Camera   
 * 类描述:相机   
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:44:10    
 * @version 6.0   
 *
 */
public class Camera implements USB {

	public void connect() {
		System.out.println("相机正常接入电脑");
	}

	public void disConnect() {
		System.out.println("相机正常断开电脑");
	}

}
package com.ex.implementation;
/**
 * 
 * 项目名称:uml   
 * 类名称:MP3   
 * 类描述:MP3     
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:44:38    
 * @version 6.0   
 *
 */
public class MP3 implements USB {

	public void connect() {
		System.out.println("MP3正常接入电脑");
	}

	public void disConnect() {
		System.out.println("MP3正常断开电脑");
	}

}
package com.ex.implementation;
/**
 * 
 * 项目名称:uml   
 * 类名称:电脑
 * 类描述:电脑   
 * 创建人:YinXiangBing   
 * 创建时间:2014-6-23 上午10:22:03    
 * @version 6.0   
 *
 */
public class Computer{

	public void useUSB(USB usb){
		usb.connect();
		usb.disConnect();
	}
    public static void main(String[] args){
	   	 Computer cpu = new Computer();
	   	 //相机
	   	 Camera cam = new Camera();
	   	 cpu.useUSB(cam);
	     //相机
	   	 MP3 mp3 = new MP3();
	   	 cpu.useUSB(mp3);
    }
}