微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

class Company
{
    String name;
}

我需要保证不同的Company对象具有唯一的名称 – 即没有两个这样的对象可能具有相同的名称,因为从我的角度来看它没有任何意义,也只是吃内存 – 如果两个员工在IBM工作,那么具有该名称的单个Company对象period.

我现在的想法是将公司构造函数设为私有 – 以便将具有任意名称的公司对象分配的工作委托给受信任的方法 – 假设这将拒绝任何后续尝试创建具有已存在名称的对象或返回现有或新对象(必要时创建一个).

问题是,我不知道如何优雅地完成这一任务.一件好事就是每次请求具有名称的Company对象时都不必进行O(n)查找 – 所以为了方便我可能会使用哈希映射或二叉树吗?我还想覆盖公司对象的识别方式 – 这导致我:我会覆盖Object.equals和/或Object.hashCode方法吗?

解决方法

看一下flyweight模式.

我会做的是:

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

原文地址:https://www.jb51.cc/java/130244.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐