gpt4 book ai didi

JavaScript参数依赖类继承

转载 作者:行者123 更新时间:2023-11-30 21:02:18 25 4
gpt4 key购买 nike

我有以下类层次结构:

  Renderer (can render some data on screen)
|
DbRenderer (fetch data from the database)
|
JsonRenderer (my class. converts specific data into needed format supported by Renderer)

它运行良好,但需要将数据库连接参数传递到 JsonRenderer 构造函数中,以便通过 super() 调用 DbRenderer 的构造函数(),因为该参数在那里是必需的。

所以,它看起来像:

const renderer = new JsonRenderer(dbParams);

,在哪里

class JsonRenderer extends DbRenderer {}

但是,我想让 dbParams 成为可选的,并将类层次结构更改为以下内容:

   Renderer
|
JsonRenderer

我可以通过创建单独的类来做到这一点:

class JsonRenderer2 extends Renderer {}

当然,单独的类将成为代码重复的来源,这不是一个好主意。

有没有不改变 Renderer 和 DbRenderer 父类的解决方案?

最佳答案

我认为您在这里滥用了继承权。如果不了解每个类的作用,很难确定,但我觉得您可以改用以下结构:

       Renderer (can render some data on screen, 
uses DataSource class instance
to get the data to display)

DataSource
/ \
/ \
/ \
DbData JsonData
(fetch data (uses data from JSON)
from the database)

有了这个结构,您可以执行 renderer = new JsonRenderer(DbData(dbParams))renderer = new JsonRenderer(JsonData(data))

关于JavaScript参数依赖类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com