Design patterns 工厂法模式故障
我读过工厂方法模式。我在设计后一个示例时遇到了一个问题 图案的最佳设计?有人能给我一些建议吗Design patterns 工厂法模式故障,design-patterns,factory-pattern,Design Patterns,Factory Pattern,我读过工厂方法模式。我在设计后一个示例时遇到了一个问题 图案的最佳设计?有人能给我一些建议吗 AbstractProduct Creator / \ / \ Product1 Product2 Creator1 Creator2 AbstractProduct ? How t
AbstractProduct Creator
/ \ / \
Product1 Product2 Creator1 Creator2
AbstractProduct ? How to design Creator ?
/ | \
Product1 Product2 SubAbstractProduct
/ \
Product3 Product 4
Creator的设计方法与前一个示例相同,因为创建Product3和Product4的具体创建者仍然是AbstractProduct
答复评论:
不是真的。当此AbstractProduct createProduct()在子具体创建者类(即工厂模式)中被重写时,它可以返回SubAbstractProduct
只想补充一点,自java 1.5以来,您可以在java中执行上述操作(即,重写方法返回父类方法中返回的子类型)。Creator的设计方式与前一示例相同,因为创建Product3和Product4的具体创建者仍然是AbstractProduct
答复评论:
不是真的。当此AbstractProduct createProduct()在子具体创建者类(即工厂模式)中被重写时,它可以返回SubAbstractProduct
只想补充一点,自java 1.5以来,您可以在java中执行上述操作(即重写方法返回父类方法中返回的子类型)。谢谢您的回答。但如果创建者有一个方法:AbstractProduct createProduct(),那么当我使用product=createProduct()时,产品只是AbstractProduct类型,而不是SubAbstractProduct,产品不能使用SubAbstractProduct.OK中的任何扩展方法,但如果SubAbstractProduct有AbstractProduct没有的方法,例如moreMethod()。虽然product只是AbstractProduct,但如果它想使用moreMethod(),我必须键入cast。谢谢您的回答。但如果创建者有一个方法:AbstractProduct createProduct(),那么当我使用product=createProduct()时,产品只是AbstractProduct类型,而不是SubAbstractProduct,产品不能使用SubAbstractProduct.OK中的任何扩展方法,但如果SubAbstractProduct有AbstractProduct没有的方法,例如moreMethod()。虽然product只是AbstractProduct,但如果它想使用moreMethod(),我必须键入cast。