上一篇文章中主要介绍了设计模式的定义与分类,不过在具体学习那种设计模式之前还是有必要
掌握面向对象、设计 模式中的类的关系,这对于之后的设计模式的学习是有很大好处的。因为只有
理解了面向对象中类之间存在的关系,才有可能运用恰当的设计思想。
在面向对象的程序设计中类是对象的抽象,展示了对象的结构与系统的交互行为(数据、数据操作)。
类具有继承关系 可以继承父类,也可以和其他类进行交互。具体来说类之间的交互方式主要有以下方式:
1、继承关系 (Generalization)
继承表示类与类之间(接口与接口之间)的父子关系,在java语言中我们使用extends表示类之间
的继承关系,而在UML图例中使用实线+空心箭头表示,箭头指向父类后父接口。如下:
2、实现关系(Implementation)
表示一个类实现一个或多个接口的方法:接口是可以多实现的。简单的来讲接口就是一种契约、规范
实现该接口的类符合该接口的规范(实现接口的方法)。UML例图中使用虚线+空心箭头表示实现关系,java
中使用Implements表示。如图:
3、依赖(Dependence)
依赖关系指一个类依赖于另一个类,直观的来讲的话就是类A使用了类B,其中B作为A类的方法参数、方法
局部变量、静态方法调用。如图:
4、关联关系(Association)
两个相对独立的对象,当一个对象的实例与一个对象的实例存在固定的关系时,这两个对象就存在这关联关系。
具体来讲就是类中是否有其他类作为其成员变量。
●单向关联:类A中使用了类B,类B是作为类A的成员变量的。关联关系表现为A->B
●双向关联:类A使用类B作为成员变量,类B也使用类A作为成员变量,关联关系表现为A<->B
代码:
- public class User {
- private Order order ;//注意这里不要初始化
- private int id;
- private String name ;
- public Order getOrder() {
- return order;
- }
- public void setOrder(Order order) {
- this.order = order;
- }
- }
- class Order
- {
- private User user;//注意这里不要初始化,避免双向关联时,反复的创建对象
- private int id;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- }
●多维关联:多个对象之间存在关联关系
5、聚合关系(Aggregation)
聚合关系是关联关系的一种,聚合关系的耦合度比关联关系的耦合度要强。他们虽然在代码表现上
是一样的,但是聚合关系强调整体与部分的关系(A由B组成),而关联关系两者是独立的。
6、组合关系(Compostion)
相比于聚合关系,组合关系的耦合度更强。组合关系同样是“整体-部分”的关系,所不同的是
组合关系中的”部分“是不能脱离整体而存在的,换言之”整体“管理”部分“的生命。
转载 http://blog.youkuaiyun.com/kiritor/article/details/8629524