我有一组协同工作的类(我正在用 javascript 编码)。
有一个父类和若干由父类实例化的子类。我有许多这些类的客户,每个客户都需要向父类或子类添加一个或多个方法。
我不是让每个客户端都从这些类继承,这是可行的但由于子类而变得困惑,我让这些客户端在实例化主类时将函数传递给父类。
主类动态创建方法,客户端可以调用这些方法,就像它们一直存在一样。
我的问题是:
- 这样做明智吗?
- 对于我正在做的事情,设计模式是什么?
最佳答案
strategy pattern适用于您在运行时获得“策略”的情况。可能适用于此。在这种情况下,策略是一个符合行为的类,即具有“执行”之类的方法。
decorator pattern也可能适用。它也是一种运行时模式,但在方法级别扩充了它正在装饰的类。
因此,如果您动态地选择一个类,那么 Strategy 模式是好的,如果您只是在运行时更改方法实现,则 Decorator 是好的。
(我在 ircmaxell 的许可下使用了这个答案的装饰器部分)
关于javascript - 是否有将方法注入(inject)类的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869062/