资深程序员之路(3)--设计模式与UML class图
来源:互联网 发布:淘宝运营教程百度云 编辑:程序博客网 时间:2024/05/20 17:40
设计模式与UML class图
设计模式在程序设计上有着很重要的作用,使用设计模式可以使得代码更容易被理解,使得代码更规范,真正实现工程化。
一、用UML表示一个类
类图一般是三行的结构:
类名称
属性:格式(可见性 名称:类型[=缺省值])
方法:格式(可见性 名称(参数列表)[返回类型])
注:在Visio中的画的类图中使用的是C#的数据类型,与Java的略有差别。
二、类与类之间的关系
类与类之间主要有6种关系,包括依赖,关联,聚合,组合,继承,实现。他们的耦合度是一次增强的。
1、依赖(Dependency)
依赖主要体现了一种使用关系,两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,主要体现为依赖关系。
依赖关系主要有3种表现形式:(以类A中使用了类B为例)
类B是作为类A的方法参数
类B是类A的方法中的局部变量
在类A中调用类B的静态方法
在依赖中使用的是“虚线+箭头”。
public class Student { public void read(Book book){ System.out.println("读的书是:" + book.getName()); } public void eat(Food food){ System.out.println("吃的是:" + food.getName()); } }
再举个栗子,一般的增删改查,这个查询的环节就是获取整个列表,那个单个条目Model和整个列表Collection之间就是依赖关系。
2、关联(Association)
关联主要体现的是一种对应关系,两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定的对应关系时,这两个对象之间为关联关系。通常是将一个类的对象作为另一个类的成员变量。
关联关系的分类:
单向关联
双向关联
自关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联关系分为单向关联和双向关联。在java中,单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。
public class Student{ private String id; private ClassName className; public Student(String id){ this.id = id; this.className = new ClassName(); } }
举个栗子,这里的类之间是同级关系的,比如老师和学生,都是属于人物的不同角色。
3、聚合(Aggregation)
聚合是关联关系的一种,表现了一种弱的“拥有”关系,关联关系的对象之间是相互独立的,但是聚合关系的对象之间存在着一种包容关系,体现的是A对象可以包容B对象,但是B对象不是A对象的一部分。他们之间是“整体-个体”的关系。
成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。
public class People{ private Student student; private Worker worker; private Farmer farmer; public People(Student student, Worker worker, Farmer farmer){ this.student = student; this.worker = worker; this.farmer = farmer; } }
再举个栗子,比如一个报销申请,要用到员工信息,部门信息,审批信息等,他们之间就是聚合关系。类和类之间是有层级关系的。
4、组合(Composition)
组合是一种强的“拥有”关系,组合中的类之间是“整体-部分”的关系,“整体”负责“部分”的生命周期,“部分”和“整体”的生命周期是一样的,“部分”单独存在是没有任何意义的。通常在整体类的构造方法中直接实例化成员类。
public class Bird{ private Wing wing; public People(){ wing = new Wing(); }
5、继承(Generalization)
继承表示的是类与类之间或者接口与接口之间的父子关系,在java中使用的是extends关键字。
public class Bird extends Animal{ }
6、实现(Implementation)
实现表示的是一个类实现一个或者多个接口,在java中使用的是implements关键字。
public class Bird implements Animal{ }
‘
参考:
http://blog.csdn.net/google19890102/article/details/44903645
- 资深程序员之路(3)--设计模式与UML class图
- 【UML】设计模式与UML
- UML设计模式之UML
- 设计与UML图以及设计模式
- 设计模式之UML类图简介
- 设计模式之初识UML图
- 设计模式之UML类图初步
- 资深程序员之路(5)--agile开发
- 设计模式 uml图
- 大话设计模式之UML
- 设计模式之UML类图
- 大话设计模式之UML
- 设计模式之UML类图
- 设计模式之基础-UML
- 【设计模式】1.UML类图关系与时序图
- 设计模式之UML类图的常见关系
- 设计模式UML图(转载)
- 设计模式的UML图
- JS初级实战练习题----附答案
- 集合类 数组 Map set queue List
- Tar 解压缩
- 资讯精选 | 人工智能正面临克隆风险!
- 网络获取图片无限轮播加小圆点联动
- 资深程序员之路(3)--设计模式与UML class图
- Android中PopupWindow的使用
- 批量去除Word的向下小箭头
- 显示全部
- Python3爬虫之六网页的初步分析【抓取豆瓣最新电影影评并用词云显示】
- 自学redis简单命令
- 解决git无法clone提示443以及配置git代理方法
- AngularJS(DIY)
- MSM8998(高通835处理器)外接指纹识别传感器linux驱动详解