关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » JAVA »设计模式中类的关系

    设计模式中类的关系

    2015-03-30 00:00:00 出处:ITJS
    分享

    在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。

    1. 依赖(Dependence) 设计模式中类的关系

    设计模式中类的关系

    依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。类上面的图例中:People类依赖于Book类和Food类,Book类和Food类是作为类中方法的参数形式出现在People类中的。

    代码样例:

    public class People{  
        //Book作为read方法的形参  
         public void read(Book book){  
            System.out.println(“读的书是”+book.getName());  
        }  
    }

    2.关联(Association)设计模式中类的关系、设计模式中类的关系、设计模式中类的关系

    单向关联:

    设计模式中类的关系

    双向关联:

    设计模式中类的关系

    对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联关系分为单向关联和双向关联。在java中,单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。

    代码样例:

    public class Son{  
       //关联关系中作为成员变量的类一般会在类中赋值  
        Father father = new Father();  
        public void getGift(){  
            System.out.println(“从”+father.getName()+”获得礼物”);  
        }  
    }  
    
    public class Father{  
        Son son = new Son();  
        public void giveGift(){  
            System.out.println(“送给”+son.getName()+“礼物”);  
        }  
    }

    3.聚合(Aggregation)设计模式中类的关系

    设计模式中类的关系

    聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

    代码样例:

    public class People{  
        Car car;  
        House house;   
        //聚合关系中作为成员变量的类一般使用set方法赋值  
         public void setCar(Car car){  
            This.car = car;  
        }  
        public void setHouse(House house){  
            This.house = house;  
        }  
    
        public void driver(){  
            System.out.println(“车的型号:”+car.getType());  
        }  
        public void sleep(){  
            System.out.println(“我在房子里睡觉:”+house.getAddress());  
        }  
    }

    4.组合(Composition)设计模式中类的关系

    设计模式中类的关系

    相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。在下图的例子中,People与Soul、Body之间是组合关系,当人的生命周期开始时,必须同时有灵魂和肉体;当人的生命周期结束时,灵魂肉体随之消亡;无论是灵魂还是肉体,都不能单独存在,他们必须作为人的组成部分存在。

    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());  
        }  
    }

    5.继承(Generalization)设计模式中类的关系

    设计模式中类的关系

    继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。UML图例中,继承关系用实线+空心箭头表示,箭头指向父类。

    6.实现(Implementation)设计模式中类的关系

    设计模式中类的关系

    表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。

    在java中继承使用extends关键字,实现使用implements关键字,很直观。就不代码演示了。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Edge浏览器百度被劫持/篡改怎么办,地址后边跟着尾巴#tn=68018901_7_oem_dg

    Google Chrome 在 iPhone 上新增了 Safari 数据导入选项

    Windows 11专业版 KMS工具激活产品密钥的方法

    DEDECMS安全策略官方出品

    Microsoft Text Input Application 可以关闭吗?

    新版本QQ如何关闭自带的浏览器?

    C++编程语言中continue的用法和功能,附举例示范代码

    c++ map 的数据结构、基本操作以及其在实际应用中的使用。

    C语言如何避免内存泄漏、缓冲区溢出、空指针解引用等常见的安全问题

    C语言中的break语句详解

    IT头条

    马斯克2026最新采访总结:2040年,全球机器人数量将突破100亿台

    23:52

    专家解读|规范人工智能前沿业态健康发展的新探索:解读《人工智能拟人化互动服务管理暂行办法》

    00:54

    用至强 6高存力搞定MoE卸载!

    17:53

    美国将允许英伟达向中国“经批准的客户”出售H200 GPU

    02:08

    苹果与微信就15%手续费达成一致?腾讯未置可否

    22:00

    技术热点

    PHP 和 Node.js 的10项对比挑战

    Javascript闭包深入解析及实现方法

    windows 7、windows 8.1手动增加右键菜单功能技巧

    MYSQL出错代码大汇总

    windows 7假死机怎么办 windows 7系统假死机的原因以及解决方法

    Ubuntu(Linux)下配置IP地址的方法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。