Mat*_*att 8 php oop many-to-many class
我将用一个例子来说明这一点:
class Company {
}
class Person {
}
Run Code Online (Sandbox Code Playgroud)
Company并Person保持多对多的关系.A Person可以属于多个,Companies并且Company可以包含多个People.
那么我是否需要创建第三个类:
class CompanyPerson {
}
Run Code Online (Sandbox Code Playgroud)
或者公司应该处理它:
class Company {
function add_person() {
}
}
Run Code Online (Sandbox Code Playgroud)
或者是Person应该的?
class Person {
function add_to_company() {
}
}
Run Code Online (Sandbox Code Playgroud)
可以使用“关联类”对 aPerson和实例的某些随机组合所共有的属性进行建模。Company
UML 中对此有一个表示法,并且在可扩展的编程语言中创建这样的概念并不难。
Person这个想法是,任何由和组成的随机对象对都Company具有关系,并且该关系本身就是一个对象。它既不是Person也不是,而是与特定和实例Company之间的连接相关的东西。PersonCompany
这些东西(属性、方法)构成了一个类:Person-Company关联类。
我之前在 Lisp 中完成了这项工作,使用一些宏来为给定的一对类定义关联类,以及一个全局弱哈希表,用于将对象对映射到它们的关联类对象(这样对于给定的个人和公司来说,这是可能的)检索关联,当这些对象变成垃圾时,该关联就会消失)。
特定公司和个人之间的实际联系很容易,例如使用列表或其他关联数据结构。人员对象可以有公司列表,反之亦然。关联类的思想解决了将个人-公司的东西放在哪里的问题。例如,每个人在一个(比方说)Person中都有一个角色。我们不能在 a 中Company包含变量,因为它可以在许多公司中扮演许多角色。我们当然不能在公司里有一个,因为它甚至不是一个人;它是一个人。它有与其相关且具有角色的人。角色可以进入关联:问题解决了。rolePersonrole