如何在SOLID "接口分离原则",从"单一职责原则"有什么不同?
ISP将非常大的接口拆分为更小和更具体的接口,这样客户端只需知道它们感兴趣的方法
但是,对我来说,这听起来只是将SRP应用于接口和类.毕竟,如果一个界面只负责一个概念性的东西,那么你将无法进一步分解它.
我错过了什么,或者是SR与SRP有多余?如果没有,那么ISP是什么意味着SRP没有?
oop design-patterns single-responsibility-principle solid-principles interface-segregation-principle
开放/封闭原则规定软件实体(类,模块等)应该是可以扩展的,但是对于修改是封闭的.这意味着什么,为什么它是良好的面向对象设计的重要原则?
oop definition design-principles open-closed-principle solid-principles
有没有人在开发JavaScript时使用SOLID编程原理(或任何部分)?
我刚开始阅读它,但似乎找不到任何人用它来JS.我发现易于实施/使用的唯一部分是"单一责任原则".
我正在寻找的是使用这些原则的文章或例子.有没有争论为什么不应该使用某些部分?
例如,"接口隔离原则"表示"许多客户端特定接口优于一个通用接口的概念".
但据我所知,JS中没有接口这样的东西(如果它会很好).
这个缩写词中第一个字母的设计模式是单一责任原则.这是一个引用:
单一责任原则规定每个对象应该承担单一责任,并且该责任应该由班级完全封装.
在我们开始编码之前,这很简单明了.假设我们有一个具有明确定义的单一责任的类.要序列化类实例,我们需要为该类添加特殊的属性.所以现在班上有另一个责任.这不违反SRP吗?
让我们看另一个例子 - 接口实现.当我们实现接口时,我们只需添加其他职责,比如处理其资源或比较其实例或其他任何内容.
所以我的问题.是否有可能严格遵守SRP?怎么做到呢?
我最近试图进入OOP,而我在使用SOLID原则和设计模式方面遇到了麻烦.我明白为什么人们会使用它们,我也真的想要使用它们,但我不能完全按照规范开发我的类.我真的很感激有助于我理解这一点的任何事情.
我知道"班级有一个改变的理由".现在,到底是什么?是否有一些气味/迹象可以说明该课程没有一个责任?或者,真正的答案是否可以隐藏在YAGNI中,并且只有在您的班级第一次更改时才重构一项责任?
我在引导程序配置Automapper和我打电话Bootstrap()的 Application_Start(),我一直在说,这是错误的,因为我要修改我的Bootstrapper每一次我必须添加一个新的映射类,所以我违反了开闭原则.
你觉得怎么样,我真的违反了这个原则吗?
public static class Bootstrapper
{
public static void BootStrap()
{
ModelBinders.Binders.DefaultBinder = new MyModelBinder();
InputBuilder.BootStrap();
ConfigureAutoMapper();
}
public static void ConfigureAutoMapper()
{
Mapper.CreateMap<User, UserDisplay>()
.ForMember(o => o.UserRolesDescription,
opt => opt.ResolveUsing<RoleValueResolver>());
Mapper.CreateMap<Organisation, OrganisationDisplay>();
Mapper.CreateMap<Organisation, OrganisationOpenDisplay>();
Mapper.CreateMap<OrganisationAddress, OrganisationAddressDisplay>();
}
}
Run Code Online (Sandbox Code Playgroud) .net bootstrapping automapper open-closed-principle solid-principles
有人能给我一个单一责任原则的例子吗?我试图理解,在实践中,一个班级有一个单一的责任,因为我担心我可能每天都违反这条规则.
oop single-responsibility-principle definition design-principles solid-principles
Liskov替换原则规定子类型应该可替代该类型(不改变程序的正确性).
我已经读过关于方形/矩形的例子,但我认为车辆的一个例子可以让我更好地理解这个概念.
来自OOP语言,我熟悉面向对象设计的SOLID原则.似乎其中一些适合功能性编程模型,而其他部分在缺乏状态的世界中毫无意义.重构功能代码是否有类似的原则?
solid-principles ×10
oop ×6
single-responsibility-principle ×3
.net ×2
definition ×2
automapper ×1
c# ×1
interface-segregation-principle ×1
javascript ×1