类的关系

【重点掌握】:设计模式定义、类关系、抽象封装具体、面向超类型编程

【重点掌握】:策略模式的参与角色、职责分配、协作及代码实现。

超类型就是抽象类或接口

1、接口

2、关联:类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联

理解:关联(Association)关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。

关联分为组合和聚合

Public class A {

    Private B b;//从这行代码显示A关联B,但不能决定是组合还是聚合关系,

}

2.1组合:整体与部分间的关系,不可分的,比如人和人的大脑,比聚合关系强的关系。

public class Head

{

    private Mouth mouth;

    public Head()

    {

        mouth = new Mouth();//类Head对象创建时Mouth对象也创建了

    }

}

public class Mouth

{

}

2.2聚合:整体与部分之间是可分离的,比如计算机与CPU、公司与员工的关系等,与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。

Public class A {

    Private B b; //注意这有定义类B在类A中的私有变量

    Public set(B b){

        This.b=b;}

}

//从这行代码显示A类对象创建时,B类对象没有创建,类比组装主板A和其上的网卡B,两者可以分拆,换一个新的网卡。

Main(){

    A a = new A();

    a.set(new B());

}

3.依赖:以类A依赖类B为例,表示类B出现在类A的一个方法中的参数中、方法体局部变量、或静态B方法调用、返回值。

理解:依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

public class Driver {

    public void drive(Car car) {

        car.move();

    }

}

public class Car {

    public void move() {

       }

}

4. 泛化关系(Generalization)也就是继承关系

1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;

2、子类中除了与父类一致的信息以外,还包括额外的信息;

3、可以使用父类的实例的地方,也可以使用子类的实例;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由Mark...
    格子林ll阅读 10,114评论 1 105
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 如果记忆能够筛选, 该有多好 有时候, 很想忘记一切, 记不起自己是谁, 忘掉所有的难过, 像个刚出生的孩子一样。...
    0d8207641433阅读 1,495评论 0 0
  • 文/然雪婵 1 周末和闺蜜晓丽去逛街,晚上搭地铁回程时,在地铁上发现了特别有意思的一件事。 列车中途停站时,一前一...
    然雪婵阅读 4,662评论 0 6