Java 当新对象是原始对象的一部分时,是否将对实例的引用传递到另一个对象?

Java 当新对象是原始对象的一部分时,是否将对实例的引用传递到另一个对象?,java,oop,architecture,Java,Oop,Architecture,当新实例将成为原始实例的一部分时,将父类的这个实例传递到另一个对象的构造函数时(从设计角度来看),是否会有任何缺陷 public class Order extends AbstractOrder { private final OrderExecutionStrategy executionStrategy; private Order() { this.executionStrategy = new OrderExecutionStrategy(this); }

当新实例将成为原始实例的一部分时,将父类的
这个
实例传递到另一个对象的构造函数时(从设计角度来看),是否会有任何缺陷

public class Order extends AbstractOrder {

  private final OrderExecutionStrategy executionStrategy;

  private Order() {
    this.executionStrategy = new OrderExecutionStrategy(this);
  }

  // the implementation omitted for brevity...

}
我需要访问
OrderExecutionStrategy
类中父实例的数据

public class OrderExecutionStrategy extends AbstractOrderExecutionStrategy  {

  public OrderExecutionStrategy(final Order order) {
    super(order);
  }

  @Override
  public Optional<OrderPortion> executePortion(final BigDecimal newPrice, final TradeOrders orders) {

    AssertUtils.notNull(orders, "orders");
    AssertUtils.isGtZero(newPrice, "newPrice");

    if (ComparisonUtils.equals(getOrder().getPrice(), newPrice)) {

      final BigDecimal reaminingAmount = this.getOrder().summary().getRemainToFill();

      if (ValidationUtils.isGtZero(reaminingAmount)) {
        return Optional.of(new OrderPortion(this.getOrder().getId(), reaminingAmount));
      }

    }

    return Optional.empty();

  }

}
公共类OrderExecutionStrategy扩展了AbstractOrderExecutionStrategy{
公共订单执行策略(最终订单){
超级(订单);
}
@凌驾
公共可选执行部分(最终大十进制newPrice、最终TradeOrders){
资产不为空(订单,简称“订单”);
资产isGtZero(新价格,简称“新价格”);
if(ComparisonUtils.equals(getOrder().getPrice(),newPrice)){
final BigDecimal reaminingAmount=this.getOrder().summary().getRemainToFill();
if(ValidationUtils.isGtZero(reaminingAmount)){
返回可选的.of(新订单部分(this.getOrder().getId(),reaminingAmount));
}
}
返回可选的.empty();
}
}

我看不出这里面有任何设计缺陷

但是,有几个警告:

  • 我说的是设计缺陷,而不是实现缺陷

    “我认为,这两种情况可能会相互产生负面影响,形成一个无休止的循环或某种意义上的循环。”

    这些将是实现缺陷(又称bug),而不是设计缺陷。需要更多的上下文来检查这类事情

  • 您只向我们展示了设计的一小部分,对于如何将其融入“大局”几乎没有任何线索


  • 很难说。细节不够。@StephenC我应该澄清什么样的细节?我认为这两个实例可能会相互产生负面影响,一个无止境的循环,或者从这个意义上说,可以向我们展示父类,策略类,并解释代码应该做什么。“我认为这两个实例可能会相互产生负面影响,一个无休止的循环或类似的情况。”-显然,我们不能说这些事情在没有看到代码的情况下是否会发生。当然,它们可能是实现缺陷(又称bug),而不是设计缺陷。(在本文中,“设计”是什么意思?@StephenC添加了strategy类,我所说的设计是指这些对象的组成类型。