您的位置:首页 > 运维架构 > 网站架构

【架构师之路】-【01设计模式】-01对象之间关系

2017-03-08 13:09 405 查看
各种面向对象的设计语言中:我们将对象之间的关系分为6种:依赖关系、关联关系、聚合关系、组合关系、继承关系、实现关系;这6中关系的耦合程序依次增大

一、依赖关系

定义即使用关系;特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。比如: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: