oop专题提供oop的最新资讯内容,帮你更好的了解oop。
我对于用于协议的关联类型的语法与另一方面的通用类型之间的区别感到困惑。 例如,在Swift中,可以使用类似的方法定义一个通用类型 struct Stack<T> { var items = [T]() mutating func push(item: T) { items.append(item) } mutating func pop() -> T
我在使用React.js与TypeScript.有没有办法创建继承自其他组件的React组件,但是还有一些额外的道具/状态? 我想要实现的是这样的: interface BaseStates { a: number; } class GenericBase<S extends BaseStates> extends React.Component<void, S> { prote
OOP & OOD 及其模型 来源:http://www.elementsoft.com作者: 爱乐门   面向对象的编程方法OOP是九十年代才流行的一种软件编程方法。它强调对象的“抽象”、“封装”、“继承”、“多态”。 我们讲程序设计是由“数据结构”+“算法”组成的。从宏观的角度讲,OOP下的对象是以编程为中心的,是面向程序的对象。我们今天要讲的OOD是面向信息 的对象,是以用户信息为中心的。
OOP的六大原则重新梳理: 单一职责:每个类只负责处理一个业务逻辑。 里氏替换:子类可以替换扩展父类的的功能,但是不能改变父类原有的功能。 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 子类中可以增加自己特有的方法。 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严
如果我理解正确,依赖注入的典型机制是注入通过类的构造函数或通过类的公共属性(成员)。 这暴露了注入的依赖性,并违反了封装的OOP原则。 我在确定这种权衡是正确的吗?您如何处理这个问题? 还请参见我对自己的问题的答案。 有另一种方法来看这个问题,你可能会感兴趣。 当我们使用IoC /依赖注入时,我们不使用OOP概念。不可否认,我们使用OO语言作为“主机”,但是IoC背后的想法来自于面向组件的软件工程
什么是依赖反转原则,为什么它很重要? 检查此文档: The Dependency Inversion Principle。 它基本上说: >高级模块不应该依赖于低级模块。两者都应该依赖于抽象。 >抽象不应该依赖于细节。细节应该取决于抽象。 至于为什么它很重要,简而言之:变化是有风险的,并且通过依赖于一个概念而不是一个实现,您减少了在呼叫站点的变化的需要。 有效地,DIP减少了不同代码段之间的耦合。
在域驱动设计中,似乎 agreement的 agreement实体不应该直接访问存储库。 这是来自埃里克·埃文斯Domain Driven Design的书,还是来自别的地方? 哪里有一些很好的解释背后的推理? 编辑:澄清:我不是在谈论分离数据访问扎进从业务逻辑的分层的经典OO实践 – 我说的是具体的安排,在DDD,实体不应该去跟数据访问层(即它们不应该保存对Repository对象的引用) 更新
我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好 在设计审查期间,每当新行为被添加到系统时,SRP被引出,因此新行为通常在一个新类中结束。这使事情很容易单元测试,但我有时感到困惑,因为它感觉像把行为从相关的地方。 我试图提高我的理解如何正确应用
Googling“DDD适合什么样的应用程序?给我以下答案: Probably 95% of all software applications fall into the “not so good for using DDD” categories. (see 07000) 那么什么是所有的大惊小怪? 我工作的应用程序主要是以数据为中心,但仍包含一些要应用的业务逻辑和规则。开始使用DDD技术会浪
我正在回顾我在面向对象编程中的知识。在类之间的关系主题,我遇到一些关系,这对我有点模糊。 我知道依赖“使用a”和继承“is-a”,但我有点不熟悉聚合,组合,关联和直接关联;也有,他们是“有-a”关系。一些使用聚合与协会可互换。 什么是直接关联?另外,什么是组合?在UML图中,表示它们的箭头是不同的。我会真的感谢,如果你能为我清除这些事情。 请注意,对“关联”定义有不同的解释。我下面的观点很大程度上
我知道“有一个单一的理由改变”。现在,究竟是什么?有没有一些气味/迹象可以告诉这个类没有单一的责任?或者真正的答案隐藏在YAGNI和只有重构单一的责任,第一次你的类改变? 单一责任原则 有很多明显的例子。 CoffeeAndSoupFactory。咖啡和汤在同一个设备可以导致相当令人讨厌的结果。在此示例中,设备可能会分解为热水器发电机和某种类型的搅拌器。然后可以从这些组件构建新的CoffeeFac
我试图学习域驱动设计,我想我有基本的想法。但有一些让我困惑。 在DDD中,是持久性模型和领域模型不同的东西吗?我的意思是,我们设计的领域和类只考虑域的关注,没关系。但是之后,当我们建立我们的存储库或任何其他数据持久化系统,我们应该创建我们的模型的另一种表示,以在持久层中使用? 我认为我们的域模型也用于持久性,这意味着我们的存储库从查询返回我们的域对象。但今天,我读这篇文章,我有点困惑。 http:
SOLID“接口隔离原理”与“单一责任原则”有何不同? 维基百科entry for SOLID says那个 ISP splits interfaces which are very large into smaller and more specific ones so that clients will only have to know about the methods that are
这可能只是我,这就是为什么我在问这个问题。信息专家,不要问,SRP通常被一起提到最佳做法。但我认为他们是不对的。这是我在说的: 有利于SRP但违反的代码告诉不要问,信息专家: Customer bob = ...; // TransferObjectFactory has to use Customer's accessors to do its work, // violates Tell D
我发现这个有趣的博客文章是通过CodingHorror: My Favorite Interview Question.简而言之,他谈到设计垄断游戏的面向对象设计挑战,重点是如何建模游戏规则。例如,“如果一个玩家拥有波罗的海大道,她可以添加一个房子吗?” 有趣的是,他在帖子底部附近写道: You can probably save yourself a lot of interview time.
我基本上想了解一些人认为在现实世界的代码中使用单一责任原则是合理的,实际上有多少。在 Podcast #38年乔尔谈论这个OOP原则是如何无用的现实世界;此外,这表明Bob叔叔的人们可能不会写出不平凡的系统。 我在几个软件项目中亲自写了或扮演了重要角色,但是在我的年轻职业生涯中,现在才发现了这种模式。我喜欢这个原则的声音,真的很想开始使用它。我发现乔尔在播客中的论据很弱(像其他人一样,如果继续阅读
什么是依赖倒置原则,为什么它很重要? 请查看此文档: The Dependency Inversion Principle。 它基本上说: >高级模块不应该依赖于低级模块。两者都应该取决于抽象。 >抽象不应该依赖于细节。细节应取决于抽象。 至于为什么它很重要,简而言之:变更是有风险的,并且通过依赖于概念而不是实施,您减少了呼叫站点的变更需求。 实际上,DIP减少了不同代码之间的耦合。我们的想法是,
假设您在Value对象和Services对象中划分系统(如“面向对象的软件增长,测试指导”中所述.Misko Hevery称这些为“newables”和“injectables”. 当您的一个值对象突然需要访问服务来实现它的方法时会发生什么? 假设你有一个很好的简单Value对象.它是不可变的,包含一些信息,就是它.假设我们使用类似这样的东西: CreditCard card = new Cred
我理解聚合和组合之间的区别,但我在关联方面有点挣扎.我目前的理解是,当“它们彼此使用”时,类之间存在关联,例如,在方法调用期间将一个对象传递给另一个对象.也可以看看: http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit 两个对象都是独立存在的,与聚合相反,没有对象
我已经添加依赖注入到我的代码,因为它通过代码更容易通过嘲笑单元测试. 然而,我要求我的电话链上的对象更高级的知道对象在呼叫链上. 这违反了德米特法吗如果是这样的话呢? 例如:A类具有对接口B的依赖性.将要使用的此接口的实现注入到类A的构造函数中.任何想要使用A类的人现在也必须具有对B的实现的引用.可以称其方法直接含义,并具有其子组件的知识(接口B) 维基百科对Demeter的法律说:“根本的概念是