Change Unidirectional Association to Bidirectional(将单向关联改为双向关联)

两个类都需要使用对方特性,但其间只有一个单向连接

 重构:添加一个反向指针,并使修改函数能够同时更新两条连接

由哪个类负责控制关联关系。建议单个类来操控,因为这样就可以将所有处理关联关系的逻辑安置于一地。

    1、如果两者都是引用对象,而期间的关联是“一对多”关系,那么就由“拥有单一引用”的那一方承担“控制者”角色。
    2、如果某个对象是组成另一个对象的部件,那么由后者(整体)负责控制关联关系。
    3、如果两者都是引用对象,而期间的关联是“多对多”关系,那么随便哪个对象控制关联关系都可。

public class Order {private Customer customer;public Customer getCustomer() {return customer;}// 建议:一对多关系里,【一方】维护关系.public void setCustomer(Customer arg) {if (this.customer != null) {this.customer.friendOrders().remove(this);}this.customer = arg;if (this.customer != null) {this.customer.friendOrders().add(this);}}
}public class Customer {private Set<Order> orders = new HashSet<>();public Set<Order> friendOrders() {/*should only be used by Order when modifying the association*/return orders;}// 【多方】也修改连接,直接调用【一方】的函数.public void addOrder(Order arg) {arg.setCustomer(this);}
}

多对多场景:

public class Order {private Set<Customer> customers;// controlling methods.public void addCustomer(Customer arg) {arg.friendOrders().add(this);this.customers.add(arg);}public void removeCustomer(Customer arg) {arg.friendOrders().remove(this);this.customers.remove(arg);}
}public class Customer {private Set<Order> orders = new HashSet<>();public Set<Order> friendOrders() {/*should only be used by Order when modifying the association*/return orders;}// 使用控制方函数.public void addOrder(Order arg) {arg.addCustomer(this);}public void removOrder(Order arg) {arg.removeCustomer(this);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的作品-图书馆信息管理系统

这曾经是我的数据库课程设计中开发的程序&#xff0c;而且“有幸”当上了我以前高中同学的毕业设计。下面公布几张图片待我的那位同学毕设通过后我就公开源代码&#xff01;哈哈 转载于:https://www.cnblogs.com/wpwen/archive/2006/05/14/399914.html

计算机不能显示可移动磁盘咋办,U盘插上电脑不显示“可移动磁盘”该怎么办...

U盘插上电脑不显示“可移动磁盘”该怎么办重新分配盘符1、右击我的电脑&#xff0c;在弹出的快捷菜单中选择治理命令&#xff0c;进入到计算机治理窗口。2、依次展开存储/可移动存储&#xff0c;单击磁盘治理一项&#xff0c;在窗口右侧&#xff0c;看到U盘运行状态为良好&…

CNNIC报告:我国网民达7.72亿 人工智能取得重要进展

来源&#xff1a;网络大数据概要&#xff1a;报告显示&#xff0c;截至2017年12月&#xff0c;我国网民规模达7.72亿&#xff0c;全年共计新增网民4074万人。互联网普及率为55.8%&#xff0c;较2016年底提升2.6个百分点。中国互联网络信息中心(CNNIC)今日发布第41次《中国互联网…

AI 识别抑郁症正确率高达八成,但AI+精神健康还有很长的路要走

来源&#xff1a; 智能相对论&#xff08;aixdlun&#xff09;近年来&#xff0c;“抑郁症”一词越来越多的被人们提起&#xff0c;不少名人如白岩松、崔永元等都曾表示陷入过抑郁症的痛苦&#xff0c;而抑郁症患者不堪病痛而自杀的新闻也屡见不鲜。生命的“陨落“&#xff0c;…

上万家物联网公司会被“政策死”吗

来源&#xff1a;财经十一人概要&#xff1a;有时候&#xff0c;打败你的可能不是新技术&#xff0c;只是一份文件。这次政策风波涉及两个问题&#xff0c;一是哪种物联网技术路线更合适&#xff0c;二是通过行政手段干预市场竞争是否合理。“有时候&#xff0c;打败你的可能不…

Replace Type Code with State/Strategy(以State/Strategy取代类型码)

有一个类型码&#xff0c;它会影响类的行为&#xff0c;但你无法通过继承消除它 public class Employee {static final int ENGINNER 0;static final int SALESMAN 1;static final int MANAGER 2;private int type;// 月薪.private int montylySalary;// 佣金.private int c…

MSRA副院长周明博士:四大研究领域揭示自然语言技术的奥秘

来源&#xff1a;AI科技评论概要&#xff1a;自然语言理解处在认知智能最核心的地位。比尔盖茨曾说过&#xff0c;「语言理解是人工智能皇冠上的明珠」&#xff0c;沈向洋博士也说过「懂语言者得天下」。自然语言理解处在认知智能最核心的地位。它的进步会引导知识图谱的进步&a…

ajax将响应结果显示到iframe,JavaScript:iframe / Ajax / JSON

iframe在Ajax流行之前大量使用&#xff1a;iframe中的src属性指定的就是一个独立的页面url地址&#xff0c;iframe中呈现的就是这个页面的内容。通过改变src的值&#xff0c;我们就可以轻松的改变iframe中的内容(类似的&#xff0c;刷新验证码也是同样的手段)&#xff1a;docum…

2018 AI 产品趋势:喧嚣的追风者和静默的收割人

来源&#xff1a;36氪毫无疑问&#xff0c;在消费科技品领域&#xff0c;AI产品有泡沫。故事要从2014年说起。那一年底&#xff0c;亚马逊低调发布了智能音箱Echo&#xff0c;苹果发布了第一代Apple Watch智能手表。比起AI浪潮&#xff0c;那个时候大家谈论更多&#xff0c;是智…

ftp服务器需要什么系统,ftp服务器需要什么系统

ftp服务器需要什么系统 内容精选换一换单独购买的云硬盘为数据盘&#xff0c;可以在云硬盘列表中看到磁盘属性为“数据盘”&#xff0c;磁盘状态为“可用”。此时需要将该数据盘挂载给云服务器使用。系统盘必须随云服务器一同购买&#xff0c;并且会自动挂载&#xff0c;可以在…

重磅 | MIT启动IQ计划:研究人类智能,让全世界的机构共同合作

作者&#xff1a;思颖概要&#xff1a;当地时间 2 月 1 日&#xff0c;MIT 宣布启动 MIT Intelligence Quest&#xff08;智能探索&#xff09;计划&#xff0c;该项计划旨在助力人类智能的基础研究&#xff0c;推动能造福于社会的技术工具的发展。据悉&#xff0c;该项声明由 …

北京发自动驾驶车辆考试大纲 难度堪比普通人考驾照

来源&#xff1a;新京报概要&#xff1a;自《加快推进自动驾驶车辆道路测试有关工作的指导意见》发布以来&#xff0c;北京进一步为自动驾驶车辆明确其性能测试与实际道路测试的“考试大纲”。自《加快推进自动驾驶车辆道路测试有关工作的指导意见》发布以来&#xff0c;北京进…

免费 Flash 留言板 -Powered by Kong

-----点击预览------新开窗口地址&#xff1a;http://iamkong.com/bord/bord.html重点*在FLASH load数据库数据&#xff0c;以及留言Post数据库这是FLASH与外面数据交互的方法之一 >点击下载{white白色}>点击下载{black 黑色}点击下载FLA源文件转载于:https://www.cnblog…

普华永道2030汽车产业报告 私家车真正Out了!

来源&#xff1a;智东西概要&#xff1a;随着新兴科技渗透汽车产业&#xff0c;电动化、智能化、共享化等趋势愈演愈烈。随着新兴科技渗透汽车产业&#xff0c;电动化、智能化、共享化等趋势愈演愈烈。科技企业、新造车企业杀入传统价值链&#xff0c;业界称之为汽车产业变革。…

[转] TOUGH 的系列平面广告

转载于:https://www.cnblogs.com/temptation/archive/2006/08/09/471863.html

未来网络经济的99个趋势报告

来源&#xff1a; 199IT互联网数据中心概要&#xff1a;未来网络经济的99个趋势报告72%的全球CEO认为未来3年将比过去50年对其行业的影响更大&#xff1b;到2020年&#xff0c;平均每个人都会比与机器人有更多的对话&#xff1b;创新品牌的品牌价值升值比没有那么创新的品牌高9…

Hinton:人类就是机器,绝妙的机器

编译 夏乙 唐旭量子位 出品 | 公众号 QbitAI概要&#xff1a;三十多年以来&#xff0c;Geoffrey Hinton一直徘徊在人工智能研究的边缘地带。1三十多年以来&#xff0c;Geoffrey Hinton一直徘徊在人工智能研究的边缘地带。他像一个局外人一样坚守着一个简单的观点&#xff1a;计…

装修相片(第50天拍,全部,25号更新)

装修相片(第50天拍,全部,25号更新) 好不容易,找了个时间和相机,去把房子照了下来,因为准备要搬家了,怕搬家后乱乱的,没有了效果.1.厨房:厨柜700元/米,方太抽油烟机11902.客卧:3.主卧,富得宝,整套3480元.5.书房,书架(双虎),2300元.6.餐厅:7.沙发:3700元,这个一直觉得贵了.8.电视…

不止Alexa和AWS,揭秘亚马逊人工智能发展史

来源&#xff1a;腾讯科技编译&#xff1a;昱烨亚马逊上周四公布了2017年第四季度财报&#xff0c;盈利接近20亿美元&#xff0c;创下历史纪录。Alexa语音助手和AWS云计算服务是亚马逊业绩的亮点。《连线》杂志近日刊文&#xff0c;介绍了深度学习技术如何赋能Alexa和AWS&#…

Separate Query from Modifier(分离查询和修改)

某个函数既返回对象状态值&#xff0c;又修改对象状态 重构&#xff1a;建立两个不同的函数&#xff0c;其中一个负责查询&#xff0c;另一个负责修改 动机 如果某个函数只是向你提供一个值&#xff0c;没有任何看得到的副作用&#xff0c;那么这是个很有价值的东西。 你可以任…