java - 分两个层次应用工厂模式

标签 java oop design-patterns factory-pattern

我想问是否使用(摘要)Factory Pattern在这种情况下推荐:我有 20 Products所有这些都由派生自父类(super class) BaseProduct 的单独类表示。 。 Products分为 5 Categories ,其中每一个也由派生自父类(super class) BaseCategory 的单独类表示。 。每个Product属于一个特定的Category 。创建Product仅在其 Category 中才有意义且技术性地执行,因此相应的Category必须在 Product 实例化之前实例化。然而Category如果没有 Product 则无法在应用程序中“独立” 。的选择Product以及 Category 一起创建通过检查 String 来确定。避免大量if-else客户端中的代码我更喜欢使用 Factory Pattern关于类别的创建:

    class CategoryFactory{

       static Category createCategory(String s){

        if(s.equals("foo"))
            return new Category1();
        else if (s.equals("bar"))
            return new Category2();
        ...

         }
        }

我担心的是如何处理 Products 的创建在每个 Category 。我应该通过StringCategory 的构造函数中类并应用类似的 Factory在类别内?我应该使用 Factory对于 Products并将其作为 Category 的构造函数中的参数提供?有没有更好的方法来解决整个问题?请记住,我无法创建 Product创建 Category 后。当我设置 Category在客户端中,它必须同时创建并包含其 Product

最佳答案

你可以这样做。如果 2 个 Categories 具有相似或相同的方式,那么让 Category 拥有一个名为 getProductFactory() 之类的方法(至少这样)可能会更清晰要生产产品,您可以重复使用工厂。

关于java - 分两个层次应用工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254962/

相关文章:

java - 使用 JDBC 将 RDBMS 转换为 OOP,将 SQL 转换为 Java

java - 常量类的接口(interface)模式

java - mac os jdk 1.8 问题 vlc control JAWT not load

java - WebLogicServer 不创建 DemoIdentity.jks

java - OOP扩展继承问题

design-patterns - 感兴趣区域是一个好的设计模式吗?

c++ - C/C++ 的非操作系统特定 FD(文件描述符)

java - APR 错误 : -730054

java - java.util.Date和Zoneddatetime有什么区别?

performance - Solidity 中的组合优于继承 - Gas 效率