gpt4 book ai didi

java - 可以控制 Java 中对象的身份吗?如果可以,如何控制?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:21 25 4
gpt4 key购买 nike

这是一个简单的编程问题。我不是 Java 专家。假设我以类似于许多 RDBMS 示例所做的方式使用自定义类 Company 和 Employee 的对象:

class Employee
{
Company company;
}

class Company
{
String name;
}

我需要保证不同的 Company 对象具有唯一的名称 - 即没有两个这样的对象可能具有相同的名称,因为从我的角度来看它没有意义,而且只会占用内存 -如果有两名员工在 IBM 工作,则只有一个 Company 对象具有该 name,句点。

我现在的想法是将 Company 构造函数设为私有(private) - 这样分配具有任意名称的 Company 对象的工作就被委托(delegate)给一个可信的方法 - 假设该方法将拒绝任何后续尝试使用已存在的名称创建一个对象,或者返回一个现有的或新的对象(如有必要,创建一个)。

问题是,我不确定如何优雅地完成此操作。一件好事是不必在每次请求具有名称的 Company 对象时都执行 O(n) 查找 - 所以可能是 HashMap 或二进制文件tree 是为了我方便吗?我还想重写 Company 对象的识别方式 - 这让我想到了:我会重写 Object.equals 和/或 Object.hashCode 方法?

最佳答案

看看享元模式。

我会做的是这样的:

// incomplete, but you get the idea hopefully
CompanyFactory
{
private Map<String, Company> companies;

public getCompany(final String name)
{
Company company;

company = compaines.get(name);

if(company == null)
{
company = new Company(name);
companies.put(name, company);
}

return (company);
}
}

关于java - 可以控制 Java 中对象的身份吗?如果可以,如何控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com