问题标签 [gang-of-four]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
482 浏览

design-patterns - 为什么构建器模式在构建器界面中没有方法`GetResult()`?

来自四人组的设计模式, 在此处输入图像描述

例子:

在此处输入图像描述

为什么接口没有在具体类中被覆盖Builder的方法?GetResult()ConcreteBuilder

在示例中,具体构建器具有GetXXX()方法,XXX不同的具体构建器在哪里是不同的,这根本不促进“编程到接口”。

这种“遗漏”是建造者模式中故意的吗?

0 投票
2 回答
565 浏览

c++ - 为什么有些方法属于主题/观察者接口,而另一些属于主题/观察者具体子类?

来自四人组的设计模式 在此处输入图像描述

为什么字段observers和方法在接口中AttachDetach而方法和字段 在具体子类中?为什么成员按原样分布在主题接口和具体子类中?NotifySubjectGetStateSetStateSubjectStateConcreteSubject

为什么方法Update在接口Observer中,而字段subjectobserverState具体子类中ConcreteObserver?为什么成员按原样分布在观察者接口和具体子类中?

主体和观察者之间似乎没有对称性。例如,为什么 fieldobservers属于 interface Subject,而 fieldsubject属于ConcreteObserver

谢谢。

0 投票
1 回答
72 浏览

design-patterns - 为什么装饰器和代理中的引用分别指向其主题的接口和具体?

来自四人组的设计模式

为什么component装饰器对被装饰物的引用Decorator指向被装饰物的接口Component

在此处输入图像描述

realSubject而代理的引用Proxy指向具体RealSubject

在此处输入图像描述

谢谢。

0 投票
2 回答
103 浏览

oop - 为什么一个对象的类型引用它的接口?(设计模式:可重用的面向对象软件的元素一书)

为什么对象的类型引用它的接口?为什么在这里使用术语类型?就 C++ 而言,我无法理解它。

伽玛,埃里希。设计模式:可重用的面向对象软件的元素(Addison-Wesley 专业计算系列)(Kindle Locations 593-596)。培生教育。Kindle版。

对象的类定义了对象的实现方式。该类定义了对象的内部状态及其操作的实现。相反,一个对象的类型只指它的接口——它可以响应的一组请求。一个对象可以有多种类型,不同类的对象可以有相同的类型。

0 投票
2 回答
3092 浏览

c# - 如何在 C# 中使用泛型实现策略模式

我有一个字符串

和一个通用列表。

我想做两件事:

1. 根据名称过滤列表,我这样做是这样的:

2.根据上面的var“availableCities”获取一个字符列表,我就是这样做的。

目前,这是以一种方法发生的,并且正在发挥作用。但是我试图理解设计模式,并试图实现策略模式。

所以第一个问题是,这是使用正确的模式吗?如果有怎么办?

这就是我到目前为止所得到的。

然后:

0 投票
1 回答
101 浏览

c++ - 这是编写我的工厂方法的最佳方式吗

我的意图是在基类中创建一个空的虚函数。在派生类中重新定义该函数,以便它们返回特定子类的对象。

createShapeObjects是这里的工厂方法。

根据GOF书,工厂方法的正确实现是什么,工厂方法的正确实现是什么?

事实.h

主文件

这给出了错误: