问题标签 [interface-segregation-principle]

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 回答
112 浏览

c# - 将 EF6 和 EFCore 实体转换为单个接口?

是否可以将基于 EF 6(带有 .NetFramework 4.0)和 EF Core 5.0(.Net Standard 2.1)的两个应用程序的不同版本的实体框架(核心)实体与相同的数据库连接到一个实体接口中,而不是使用实际两个实体框架提供的数据库类,使用包含实际数据库实体的接口并针对 EF 6 和 EF Core 5 支持的框架平台的项目?

在 .Net Core 和 Framework 4.0 项目中,我需要以某种方式使用类似的语法

正如我已经在这个问题中发现的那样:How to Cast DBSet to Interface in Anonymous Method - EF But without getting into the Runtime Error

0 投票
1 回答
53 浏览

c# - 接口隔离原理 一个接口继承两个共享同一个父接口的问题

我有一个具有以下类型设置和使用的应用程序。

我的任务是添加一种新类型:

我想我可以使用接口隔离原则改进代码并减少相关类型上的重复字段。这是我想出的:

不过,我觉得我有问题。整个系统的工作方式与更改前一样,但我只想检查是否真的有办法绕过公司创始人收到两次的事实,因为它扩展了董事和员工nameage

只是为了让服务器端/后端开发人员参与进来,这里是 C# 示例中的相同问题

因此,问题是公司创始人收到GetName()GetAge()两次,因为它同时实施了董事和员工。

任何人都可以帮助解决这个问题吗?

0 投票
1 回答
77 浏览

go - “接受接口”是否会破坏弃用工具?

弃用

将函数标记为已弃用的受支持方式如下所示:

现代 IDE 将突出显示此函数的任何用法,并且 linter 也可能会发出警告(我没有亲自检查过)

显示 IDE 突出显示

接受接口。返回结构。

一个流行的最佳实践是“接受接口。返回结构”。- 这往往会鼓励软件中的 SOLID 设计。

但是,以下代码(遵循此最佳实践)隐藏了弃用警告:

显示缺少 IDE 高亮显示

问题

这个问题有解决方案吗?

例如,如果我是库维护者:我如何确保库的用户看到我的弃用警告,他们也遵循最佳实践并定义自己的依赖接口。

0 投票
1 回答
31 浏览

php - 我需要了解如何在 PHP 项目中使用策略设计?

注意:这是一个 PHP 项目

我有一种情况,我为我的项目使用了 2 个 API 提供程序。它们与它们(API)提供的信息相似。我必须设置正确的方式,因为也许明天会添加更多的 API。所以我的项目需要一些方法。基本的,这是我到目前为止所拥有的:

由于每个子类都实现了这个接口,我按接口编码

现在,我有一种情况,SpaceShips 有更多方法要添加,比如 getEquipment() 和更多信息,其他类没有实现的方法。Trucks 还有更多其他人没有实现的方法,例如 hasTrailer()、trailerLength() 等...

我的问题是,现在该怎么办,我应该使用接口隔离,并将接口添加到实现这些方法的类中,然后检查实例化的对象是否具有此方法而不是运行,否则会出现异常,或者将缺少的模型添加到抽象中类 A 和 B,并将方法覆盖到使用这些方法的类中,或者也许有更好的方法来解决这个问题。顺便说一句,设计模式很新……

也许我过度工程,但我真的想以一种好的方式做到这一点。

谢谢

0 投票
0 回答
12 浏览

design-patterns - 复合设计模式是否遵循 SOLID(空间上的 L 和 I)的原则?

复合设计模板是否遵循实体原则?如果在组件上声明了所有合成方法,则它违反了接口隔离原则。如果在复合时声明了合成方法,则它违反了 Liskov 替换原则 - 因为我们在叶子和复合时改变了行为者。我错了吗?