为什么喜欢构图而不是继承呢?每种方法都有哪些权衡取舍?什么时候应该选择继承而不是作文?
我试图在MySQL中完成以下内容(请参阅pseudo
代码)
SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用WHERE子句中的(SELECT ...)的情况下执行此操作,因为这看起来像是浪费资源.
关于如何在面向对象的系统中最好地扩展,增强和重用代码,有两种思路:
继承:通过创建子类来扩展类的功能.覆盖子类中的超类成员以提供新功能.当超类想要一个特定的接口但是对它的实现不可知时,使方法抽象/虚拟以强制子类"填空".
聚合:通过获取其他类并将它们组合到一个新类中来创建新功能.为这个新类附加一个公共接口,以便与其他代码进行互操作.
每个的好处,成本和后果是什么?还有其他选择吗?
我看到这个辩论定期出现,但我认为它还没有被问到Stack Overflow(虽然有一些相关的讨论).谷歌的结果也令人惊讶地缺乏.
我试图在聚合上列出所有桶,但它似乎只显示前10个.
我的搜索:
curl -XPOST "http://localhost:9200/imoveis/_search?pretty=1" -d'
{
"size": 0,
"aggregations": {
"bairro_count": {
"terms": {
"field": "bairro.raw"
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
返回:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 16920,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"bairro_count" : {
"buckets" : [ {
"key" : "Barra da Tijuca",
"doc_count" : 5812
}, {
"key" : "Centro",
"doc_count" …
Run Code Online (Sandbox Code Playgroud) 我知道聚合和组合之间的概念差异.有人可以通过示例告诉我它们之间Java的实现差异吗?
我有3个级别的父/子结构.让我们说:
公司 - >员工 - >可用性
由于此处经常更新可用性(以及员工),因此我选择使用父/子结构来嵌套.并且搜索功能正常(所有文档都在正确的分片中).
现在我想对这些结果进行排序.通过公司(第1级)的元数据对它们进行排序很容易.但我需要按第3级(可用性)排序.
我想要按以下列表排序的公司列表:
例如:
A公司距离5英里,评级为4,最快的一名员工在20小时内可用.B公司距离5英里,也有4级,但最快的一名员工可在5小时内完成.
因此排序结果需要为B,A.
我想对每个数据添加特别的权重,所以我开始编写聚合,以后可以在我的custom_score脚本中使用.
用于创建索引,导入数据和搜索的全部要点
现在,我已经设法编写了一个实际返回结果的查询,但可用性聚合桶为空.但是,我也得到了过于结构化的结果,我想将它们弄平.
目前我回来了:
公司IDS - >员工IDS - >首次可用性
我希望聚合如下:
公司IDS - >首次上市
通过这种方式,我可以使用我的custom_score
脚本来计算得分并对其进行正确排序.
更简化的问题:
如何对多级(大)孩子进行排序/聚合,并可能使结果变平.
我面临着一个持续的问题,即彼此区分授权,组合和聚合,并确定最好使用一个而不是另一个的情况.
我已经查阅了Java OO分析和设计书籍,但我的困惑仍然存在.主要解释是:
委派:当我的对象使用另一个对象的功能而不改变它.
组成:我的对象由其他对象组成,而这些对象在我的对象被销毁之后又不能存在 - 垃圾收集.
聚合:我的对象包含其他对象,即使在我的对象被销毁之后也可以存活.
是否有可能有一些简单的例子来说明每个案例,以及它们背后的原因?除了我的对象只是引用另一个对象之外,还能展示这些示例吗?
我在这里,关于聚合和关联的另一个问题.我想学习一些UML的基础知识,所以我开始阅读Martin Fowler撰写的"UML精简版".我阅读了关于课程的两章,有一件事我想不到,那就是聚合与关联.在这本书中有这样的引用:
在UML之前的日子里,人们通常对聚合和关联是相当模糊的.无论是否含糊,它们总是与其他人不一致.因此,尽管出于不同的原因,许多建模者认为聚合很重要.因此UML包含聚合(图5.3),但几乎没有任何语义.正如Jim Rumbaugh所说,"把它想象成一个建模安慰剂" [Rumbaugh,UML Reference].
正如我从Stack Overflow上的这个引用和主题中所理解的那样,我使用这两个关系中的哪一个并不重要,它们的意思相同,或者是否有任何使用聚合而不是关联的情况是合理的和/或我不能改变一个到另一个而不改变类图的"含义"?
我问这个,因为这本书是从2003年开始的,有些事情可能会在这几年内发生变化.
我正在回顾我在面向对象编程方面的知识.在类主题之间的关系下,我遇到了一些对我来说有点模棱两可的关系.
我知道依赖"使用-a"和继承"是-a"但我对聚合,组合,关联和直接关联有点不熟悉; 还有,他们中的哪一个是"有一种"关系.有些人使用Aggregation与Association互换.
什么是直接协会?还有什么是作文?在UML图中,表示它们的箭头是不同的.如果你能为我清除这些事情,我将非常感激.
aggregation ×10
composition ×5
oop ×5
uml ×3
associations ×2
inheritance ×2
java ×2
count ×1
delegation ×1
having ×1
mysql ×1
relationship ×1
sorting ×1