博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【小言的设计模式】类之间的关系
阅读量:7092 次
发布时间:2019-06-28

本文共 3013 字,大约阅读时间需要 10 分钟。

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中,用keywordextends表示继承关系。通常所说的继承(特殊个体 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);    }}

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
react native windows开发环境搭建(一)
查看>>
nodejs 路径
查看>>
自动化运维工具之ansible
查看>>
《深入PHP:面向对象、模式与实践》(一)
查看>>
[06] JavaScript 类型
查看>>
求最大值及其下标
查看>>
关于类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内问题的解决方案...
查看>>
Javascript:DOM表格操作
查看>>
解决WCF传输大数据量时出错并提示:远程主机强迫关闭了一个现有的连接
查看>>
蓝桥杯-波动数列
查看>>
图片理论基础
查看>>
HDU4300 Clairewd’s message
查看>>
【原】iOS学习之图片拉伸处理(类似qq的气泡)
查看>>
postman抓包
查看>>
最大稳定极值区域(MSER)检测
查看>>
如何解决CorelDRAW中尖突问题
查看>>
Javascript实现Web颜色值转换
查看>>
拼接日期填写表单
查看>>
工控系统安全问题汇总(一)
查看>>
c#加载XML文档
查看>>