相关疑难解决方法(0)

抽象工厂模式与工厂方法的区别

我知道有很多关于这两种模式之间差异的帖子,但有一些我找不到的东西.

从我一直在阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是从客户端隐藏实现,因为他们将看到通用产品.我的第一个问题是抽象工厂.它的作用是允许您创建具体对象的族(可能取决于您使用的特定工厂)而不仅仅是单个具体对象?抽象工厂是否只返回一个非常大的对象或许多对象,具体取决于您调用的方法?

我的最后两个问题是关于我在很多地方看到过的单一引言,我无法完全理解:

两者之间的一个区别是,使用抽象工厂模式,类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化.

我的理解是工厂方法模式有一个Creator接口,它将使ConcreteCreator负责知道要实例化的ConcreteProduct.这是通过使用继承来处理对象实例化的意思吗?

现在关于那个引用,抽象工厂模式究竟是如何通过合成将对象实例化的责任委托给另一个对象?这是什么意思?看起来抽象工厂模式也使用继承来完成构建过程,但是我仍然在学习这些模式.

任何帮助,尤其是最后一个问题,将不胜感激.

design-patterns factory-method factory-pattern abstract-factory

420
推荐指数
8
解决办法
19万
查看次数

使用工厂与战略设计模式

好的,所以我被赋予了一项任务,要求我同时使用策略和工厂设计模式.这是问题所在:

您正在为银行开发一个用于处理贷款的申请.有Loan一个方法的类capital().该capital()方法包含一个丑陋的if-then-else条件,它检查一些Loan对象实例属性,并根据属性使用正确的贷款类型策略.这是该capital()方法的伪代码:

capital() {
    if (expiry == null && maturity != null) {
        // Find capital for term loan
        return commitment * duration * riskFactor;
    }
    if (expiry != null && maturity == null) {
        if (getUnusedPercentage() != 1.0) {
            // Find capital for revolving loan
            return commitment * unusedPercentage * duration * riskFactor;
        } else {
            // Find capital for complex loan
            return (outstandingRiskAmount * duration * riskFactor) + (unusedRiskAmount * …
Run Code Online (Sandbox Code Playgroud)

uml design-patterns strategy-pattern factory-pattern

5
推荐指数
1
解决办法
1万
查看次数