问题标签 [class-hierarchy]

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 投票
2 回答
1800 浏览

apache-flex - 向 Spark Skin 类公开属性

我无法围绕与它的主机组件相关的火花皮肤类。基本上,从我所看到的 Flex 4 框架中的大多数皮肤来看,它们并不直接公开在宿主组件中动态设置的属性。相反,它们定义了暴露给皮肤类的状态,以定义组件何时应该看起来不同。当你有一个非常简单的组件和一组标准状态时,这一切都很好而且很花哨,但是当你在你的主机组件中设置 20 个不同的属性(假设)来改变皮肤的外观时,它可能会很快变得非常复杂.

我看到他们用来解决这个问题的方法是覆盖皮肤类中的提交属性和无效函数,从那里获取他们想要的属性的值,然后将它们设置为内部的本地实例化变量皮肤类。这很好,但我觉得这只是一个补丁解决方法,它使事情变得比它需要的复杂得多。

这是我的问题:有没有办法直接从宿主组件类中公开一个可绑定的属性,这样当你定义你的皮肤类时,它就可以直接被读取了?假设您有一个布尔属性为“已选择”的自定义按钮。在皮肤类中,您希望为属性“selected”添加一个获取和设置函数,以便您可以在设置皮肤时对皮肤执行一些操作。你如何告诉皮肤类这是一个可以从宿主组件中使用的可用属性?

0 投票
1 回答
2900 浏览

java - 如何分析Jar文件?

我想分析jar文件,即代码层次(类图)。哪些工具会对此有所帮助?

0 投票
2 回答
931 浏览

c# - F# 可区分联合与 C# 类层次结构

我有以下代码:

我想知道它是否是 F# 的一个很好的翻译

??

0 投票
2 回答
86 浏览

c++ - 在抽象层次结构的具体实例上执行合同

我迷路了,需要一些神圣的指导。

首先要做的事情:假设您有一些非常整洁的界面:

它很简单:抽象工厂,将调用接口的抽象消费者,这些新生成的 IProducts 很乐意提供。但棘手的部分来了。假设有两个(或更多)平行的具体组:

这些混凝土是完全不同的东西。就像航天飞机零件(带有零件工厂和穿梭装配线)和蔬菜袋(带有农场和.. idk,谁会食用这些蔬菜?)。然而他们一般都有那个东西:DoThings()。假设它是 PackAndSend()、Serialize() 或 Dispose(),无论你喜欢什么。没有什么具体的,但作为层次结构的基础是合法的。但这些仍然有更多的差异,而不是一般性。所以那些 ConcreteConsumers 倾向于以不同的方式使用它们。如此不同,事实上,他们绝对必须确定它应该是具体类型。

所以这就是问题所在:我现在正在强迫该层次结构的用户在他们的虚拟覆盖中将 IPoduct 向下转换为 ConcreteProduct。这让我很难受。我觉得我错过了一些东西:层次结构中的一个大缺陷,缺乏模式知识,一些东西。我的意思是,我可以确定,ConcreteConsumerB 总是收到 ConcreteProductB,但它仍然很沮丧。你会使用一个框架,它总是绕过 (void*)'s 并迫使你将它投射到你认为会来的时候吗?

我已经考虑过的解决方案:

  1. 将所有具体的接口都隧道化到 IProduct 中。但是那个产品会变成无法控制的 blob,谁可以吃()、吃()、启动()、销毁(),谁知道还有什么。所以这个解决方案对我来说似乎没有什么比沮丧更好的了。
  2. DoThings() 可能会从 IProduct 分离到另一个处理程序中,该处理程序将能够接受所有具体的(类似访问者)。这样可以删除 IProduct 并且会有单独的具体组。但是,如果有一个 SemiConcrete 层,它为这些具体组实现了一些通用功能呢?比如贴标签、变形、按摩等等。另外,当需要添加另一个具体组时,我将被迫更改该访问者,这会增加耦合。
  3. (ab) 使用模板。这在目前看来是明智的。类似的东西

    这样我就可以控制那种沮丧,但它仍然存在。

无论如何,这个问题对某人来说听起来很熟悉吗?有人看到它解决了,还是自己英勇地解决了它?C++ 解决方案会很棒,但我认为任何静态类型的语言都足够了。

0 投票
1 回答
343 浏览

python - 计算 Python 包中的类和类层次结构的数量

我有一个目录,其中包含许多子目录,其中包含对应于 Python 包的 Python 源代码。我想计算这些目录/包中包含多少类和根类(层次结构的顶部)。有什么简单的方法可以做到这一点?

0 投票
1 回答
234 浏览

python - 在 Python 中使用类实例树

我正在寻找有关处理类实例树的更多信息,以及如何最好地从树干的叶子上调用方法。我有一个带有许多分支实例(在字典中)的树干实例,每个实例都有许多叶实例(以及分支中的字典)。叶子是动作真正发生的地方,因此叶子中有用于查询值、恢复值和许多其他事情的方法。

这会导致感觉像是代码重复,因为我可能想对分支的所有叶子做某事,所以分支中有一些方法可以对叶子、指定的一组叶子或所有已知的叶子做某事分支,尽管这些确实通过简单地循环叶子并要求它们对自己做所说的事情来减少代码重复(因此执行工作的实际代码在叶子类中的一个地方)。

然后树干进来,我可能想一口气对整棵树(即所有叶子)做点什么,所以我在那里有方法要求所有已知对象运行它们的全叶功能。我开始觉得这种方式与叶子中的实际动作完全不同,尽管它工作正常,而且代码看起来相当紧凑——非常简短、可读且运行良好。

另一个问题出现在逻辑分组中。有些数据我可能想与一些、大多数或所有叶子相关联,以表明它们是某个逻辑组的一部分,因此目前叶子本身都在存储这种数据。当我想获得一个逻辑组时,我必须扫描所有叶子并将它们收集起来,而不是在主干级别拥有某种列表。这实际上一切正常,甚至非常合乎逻辑,但感觉很疯狂。这仅仅是使用树状结构的本质,因为它们的复杂性,还是有其他方法可以做这些事情?我不喜欢建立二级结构来从相反的方向连接事物——例如,制作一个引用逻辑组中叶子的结构,然后从更像列表的方向接近它们。

我很想听听其他人在这些事情上的经历的想法——任何和所有的想法。

0 投票
2 回答
3101 浏览

php - Codeigniter 在 CI_Model 类中声明类级别变量

我是 PHP 和 Codeigniter 的新手,我正在声明一个我想在模型类中访问的类级别变量。我收到未定义变量的错误。这是我的代码:

我已经声明$table并在retriveAll函数中访问。请帮我。

0 投票
1 回答
870 浏览

cakephp - 在 CakePHP 中定义模型类的层次结构

默认情况下,CakePHP 有一个AppModel类,应用程序的每个模型都继承自它。在模型之间共享逻辑的常见设计模式是创建行为并将模型配置$actAs为该行为。

但是,如果我想引入这样的模型类层次结构怎么办?:

我试图创建一个Vehicle继承自的类,AppModel然后每个子类都继承自Vehicle。但是 CakePHP 告诉我它找不到类Vehicle

我怎样才能做到这一点,我应该在 CakePHP 目录树的哪个位置创建Vehicle

谢谢!

0 投票
1 回答
191 浏览

scala - “价值类空间是平坦的”是什么意思?

我现在正在阅读《Scala 编程》一书。在第 11 章中,它提到:

请注意,值类空间是平坦的。

但没有人解释这意味着什么。是不是重要?为什么?以及如何使用以及如何检查值类空间真的很平坦。看来,它应该告诉 ref 类空间不是平坦的,但不是,没有其他话再说一遍。所以我想知道“空间是扁平的”是什么意思,为什么值类空间是扁平的。

0 投票
3 回答
131 浏览

php - PHP棘手的问题

我有以下类结构:

我需要在 Child 类中编写一些统一的方法来处理几个非常相似的创建实体的操作。我无法更改 Parent::process,我需要从中调用这些方法。

首先想到的是神奇的 __call 方法。实体名称是从第一个 __call 参数中解析的。于是结构变成:

但问题是 __call 无法在我需要时受到保护。我在 __call 方法的开头放置了一个 hack 方法调用,该方法通过 debug_backtrace 检查该方法是否在 Parent::process 内部调用,但这闻起来很糟糕。

有任何想法吗?