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

    xiaoxiao2021-03-25  150

    各种面向对象的设计语言中:我们将对象之间的关系分为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里有一个聚集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

    转载请注明原文地址: https://ju.6miu.com/read-898.html

    最新回复(0)