java:确保该类型只有一个实例
我遵循以下示例:java:确保该类型只有一个实例,java,oop,composite,Java,Oop,Composite,我遵循以下示例: 我想我只是迭代列表,如果instanceof,replace和put public void addDepartment(Department department) { childDepartments.add(department); } 我也希望保留订单如果Instanceof Department是第一个,我希望它将其保留为第一个,这意味着它应该在Financial Department之前打印SalesDepartment 3您的addDe
我想我只是迭代列表,如果instanceof,replace和put
public void addDepartment(Department department) {
childDepartments.add(department);
}
我也希望保留订单如果Instanceof Department是第一个,我希望它将其保留为第一个,这意味着它应该在Financial Department之前打印SalesDepartment 3您的addDepartment()需要迭代子级列表,并将每个子级的类与正在添加的对象的类进行比较。
伪代码:
Class addClass = itemToAdd.getClass();
for each child
{
if (child.getClass() == addClass)
{
//class is already in the list so replace it.
}
addDepartment()需要遍历子对象列表,并将每个子对象的类与要添加的对象的类进行比较。
伪代码:
Class addClass = itemToAdd.getClass();
for each child
{
if (child.getClass() == addClass)
{
//class is already in the list so replace it.
}
如果使用
SalesDepartment
调用addDepartment
一次,然后使用Something extensed SalesDepartment
再次调用会发生什么情况?要将前者替换为后者,还是将两者都保留?使用集合
?(例如,LinkedHashSet
)@khachik说,在目前情况下,没有任何东西会超出其实施范围,这是无效的。但是,如果扩展SalesDepartment更容易,那么它仍然是SalesDepartment,因此替换它。如果不是这样,那么您可以维护类->实例的映射,并按其类添加部门。如果要支持层次结构,则需要获取层次结构中部门
下面的顶级父类,并将其用作键。@ElliottFrisch,但集合无法区分具有不同构造函数参数的相同实例。它将保留所有SalesDepartment 2,因为ID不同。如果使用SalesDepartment
调用addDepartment
一次,然后使用Something extensed SalesDepartment
再次调用会发生什么?要将前者替换为后者,还是将两者都保留?使用集合
?(例如,LinkedHashSet
)@khachik说,在目前情况下,没有任何东西会超出其实施范围,这是无效的。但是,如果扩展SalesDepartment更容易,那么它仍然是SalesDepartment,因此替换它。如果不是这样,那么您可以维护类->实例的映射,并按其类添加部门。如果要支持层次结构,则需要获取层次结构中部门
下面的顶级父类,并将其用作键。@ElliottFrisch,但集合无法区分具有不同构造函数参数的相同实例。由于id不同,它将保留所有salesDepartment2
Class addClass = itemToAdd.getClass();
for each child
{
if (child.getClass() == addClass)
{
//class is already in the list so replace it.
}