【架构师之路】-【01设计模式】-01对象之间关系
2017-03-08 13:09
405 查看
各种面向对象的设计语言中:我们将对象之间的关系分为6种:依赖关系、关联关系、聚合关系、组合关系、继承关系、实现关系;这6中关系的耦合程序依次增大
一、依赖关系
定义:即使用关系;特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。比如:A使用B;则A依赖于B。
例子:在Driver类里有一个Driver(Car car)的方法;我们需要将Car的对象传入;同时 Car类里有一个Move() 方法用于移动。类图为
特定事物的改变有可能会影响到使用该事物的其他事物,
在需要表示一个事物使用另一个事物时使用依赖关系
特定事物的改变有可能会影响到使用该事物的其他事物,
在需要表示一个事物使用另一个事物时使用依赖关系
实现方式:
1、作为方法的参数传入比如上述例子;此为主要方式
2、作为方法内部的局部变量;
3、在一个类的方法中调用另一个类的静态方法
二、关联关系
定义:两个相互独立的对象A和B;A类中有个成员变量为B;说明A和B是相互关联的;
关联分为几种:单向关联、双向关联、自身关联、多重关联。
1、单向关联:两个相互独立的对象A和B;A类中有个成员变量为B,但B中没有成员
变量为A;类图如下
2、双向关联:两个相互独立的对象A和B;A类中有个成员变量为B,B中有成员变量为A;类图如下:
3、自身关联:在一个对象A里;有一个对象为A的成员变量。类图如下
4、多重关联:两个相互独立的对象A和B;A里有一
4000
个聚集B的成员变量。类图如下:
轻微解释一下:一个表单里有多个BUTTON;即一个数组的BUTTON。聚集的含义
就是把很多对象放到一起就是一个聚集(Array,Collection。。)
三、聚合关系:
定义:聚合关系为一种特殊的关联关系;比如:Car类里有个成员变量为engine(发动机)
;汽车是包含发动机的;但如果没有了汽车;发动机也能存在。这样的关系就是聚合关系
代码:
四、组合关系
定义:相比于聚合关系;它更加的耦合;它是一种特殊的聚合关系;它的关系部分会
随着主体的消失面消失。比如一个人有灵魂和身体;当人死了;那么灵魂消失;
身体火化 ;就消失完了。
代码:
定义:继承关系(Generalization)也就是泛化关系,也称为“is-a-kind-of”关系,泛化关
系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
在UML中,泛化关系用带空心三角形的直线来表示。
在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用
冒号“:”来实现。 比如:一个Person为父类;Student和Teacher为子类;
六、实现关系
定义: 表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作
。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。
参考文章:
http://blog.csdn.net/hguisu/article/details/7609483
http://blog.csdn.net/zhengzhb/article/details/7187278
http://wenku.baidu.com/link?url=07GPviieGtZEOj_dcoNc6lSfUIw5C-GfubWdRLCILvI5bOkC2cCbA5j7a3Kvmy9uvoqI8lNksT_StntFKOlmXsA140zev3Ve4-nFD9BX5Gq
一、依赖关系
定义:即使用关系;特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。比如:A使用B;则A依赖于B。
例子:在Driver类里有一个Driver(Car car)的方法;我们需要将Car的对象传入;同时 Car类里有一个Move() 方法用于移动。类图为
特定事物的改变有可能会影响到使用该事物的其他事物,
在需要表示一个事物使用另一个事物时使用依赖关系
特定事物的改变有可能会影响到使用该事物的其他事物,
在需要表示一个事物使用另一个事物时使用依赖关系
实现方式:
1、作为方法的参数传入比如上述例子;此为主要方式
2、作为方法内部的局部变量;
public class Driver { public void drive() { Car car = new Car(); car.move(); } }
3、在一个类的方法中调用另一个类的静态方法
public class Driver { public void drive() { Car.move(); } }
二、关联关系
定义:两个相互独立的对象A和B;A类中有个成员变量为B;说明A和B是相互关联的;
关联分为几种:单向关联、双向关联、自身关联、多重关联。
1、单向关联:两个相互独立的对象A和B;A类中有个成员变量为B,但B中没有成员
变量为A;类图如下
2、双向关联:两个相互独立的对象A和B;A类中有个成员变量为B,B中有成员变量为A;类图如下:
3、自身关联:在一个对象A里;有一个对象为A的成员变量。类图如下
4、多重关联:两个相互独立的对象A和B;A里有一
4000
个聚集B的成员变量。类图如下:
轻微解释一下:一个表单里有多个BUTTON;即一个数组的BUTTON。聚集的含义
就是把很多对象放到一起就是一个聚集(Array,Collection。。)
三、聚合关系:
定义:聚合关系为一种特殊的关联关系;比如:Car类里有个成员变量为engine(发动机)
;汽车是包含发动机的;但如果没有了汽车;发动机也能存在。这样的关系就是聚合关系
代码:
public class Car { private Engine engine; public Car(Engine engine) { this.engine = engine; } public void setEngine(Engine engine) { this.engine = engine; } …… } public class Engine { …… }
四、组合关系
定义:相比于聚合关系;它更加的耦合;它是一种特殊的聚合关系;它的关系部分会
随着主体的消失面消失。比如一个人有灵魂和身体;当人死了;那么灵魂消失;
身体火化 ;就消失完了。
代码:
Public class People{ Soul soul; Body body; //组合关系中的成员变量一般会在构造方法中赋值 Public People(Soul soul, Body body){ This.soul = soul; This.body = body; } Public void study(){ System.out.println(“学习要用灵魂”+soul.getName()); } Public void eat(){ System.out.println(“吃饭用身体:”+body.getName()); } }五、继承关系:
定义:继承关系(Generalization)也就是泛化关系,也称为“is-a-kind-of”关系,泛化关
系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
在UML中,泛化关系用带空心三角形的直线来表示。
在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用
冒号“:”来实现。 比如:一个Person为父类;Student和Teacher为子类;
六、实现关系
定义: 表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作
。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。
参考文章:
http://blog.csdn.net/hguisu/article/details/7609483
http://blog.csdn.net/zhengzhb/article/details/7187278
http://wenku.baidu.com/link?url=07GPviieGtZEOj_dcoNc6lSfUIw5C-GfubWdRLCILvI5bOkC2cCbA5j7a3Kvmy9uvoqI8lNksT_StntFKOlmXsA140zev3Ve4-nFD9BX5Gq
相关文章推荐
- 【架构师之路】-【01设计模式】-02设计原则之单一职责原则
- 【架构师之路】-【01设计模式】-07设计原则之开闭原则
- 【架构师之路】-【01设计模式】-08所有模式
- 【架构师之路】-【01设计模式】-04设计原则之依赖倒转原则
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则
- 【架构师之路】-【01设计模式】-03设计原则之里式替换原则
- 架构、框架、设计模式之间的关系简述
- 架构、框架、设计模式之间的关系简述
- 设计模式之间的关系图
- 架构、框架、设计模式之间的关系简述
- 设计模式-23种设计模式之间的关系
- 面向对象、原则、设计模式、重构之间关系的经典诠释
- 架构、框架、设计模式之间的关系简述
- 构架、框架、设计模式之间的关系简述
- oracle学习之路--数据库实例、方案、用户、表空间、表对象之间的关系
- 设计模式和类之间的关系
- 设计模式所遵循的原则及模式之间的关系
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- 各种设计模式之间的关系和UML类图
- 【小话设计模式】类之间的关系