Java中的设计模式和OOP原理

helpmefromjava:

要解决的问题:

“会计服务订单有几种类型。这些订单的当前解决方案是为每种类型创建一个新类(基于工作类型(例如审计或日常工作),该订单是否用于优先客户,以及(整个订单有66 * 2 * 2个此类(264个订单类别!),其中有8个(2 * 2 * 2)是为您提供的-CPA希望您找到一种在不破坏现有Order接口的情况下减轻此类负担的方法。”

该守则与以下问题有关:

 if (isScheduled) {
  if (1 == orderType) { 
    if (isCritical) {
      order =
          new FirstOrderTypeScheduled(
              id, clientID, date, criticalLoading, maxCountedEmployees, numQuarters);
    } else {
      order = new Order66Scheduled(id, clientID, date, maxCountedEmployees, numQuarters);
    }
  } else if (2 == orderType) { // 2 is audit
    if (isCritical) {
      order = new CriticalAuditOrderScheduled(id, clientID, date, criticalLoading, numQuarters);
    } else {
      order = new NewOrderImplScheduled(id, clientID, date, numQuarters);
    }
  } else {
    return null;
  }
} else {
  if (1 == orderType) {
    if (isCritical) {
      order = new FirstOrderType(id, clientID, date, criticalLoading, maxCountedEmployees);
    } else {
      order = new Order66(id, clientID, date, maxCountedEmployees);
    }
  } else if (2 == orderType) {
    if (isCritical) {
      order = new CriticalAuditOrder(id, clientID, date, criticalLoading);
    } else {
      order = new NewOrderImpl(id, clientID, date);
    }
  } else {
    return null;
  }
}

因此,上面的问题中指出了给出的几种类型的类(8个类)。我想问的是,在设计原则和OO设计原则(SOLID)中,是否应该使用一种方法来解决上述问题?(我正在考虑使用桥接模式)

提前致谢!

玫瑰伊曼纽尔:

可能对您有帮助的创新设计模式是“工厂”和“建造者”。

如果您有一个接口(例如IOrder)和多个实现,则可以使用工厂模式:

您将拥有一个OrderFactory类,该类将基于一些参数创建订单,它可能是这样的:

public class OrderFactory {

   public IOrder createOrder( boolean isScheduled, int orderType, boolean isCritical){
      // here will be the logic from your post and the order will be returned
   }

}

使用Factory模式,您还可以具有多个嵌套工厂,我认为在您的示例中可能是这种情况-这称为抽象工厂。这更加复杂,您可以在此处查看示例:https : //www.geeksforgeeks.org/abstract-factory-pattern/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章