我试图进入OOP最近,和我遇到的麻烦SOLID原则和设计模式。 我明白为什么人们使用他们,我真的想太多使用它们,但我不能换我的头周围开发我的课的规格。 我真的很感激任何会帮助我的这种理解。
Answer 1:
我已经采取了在大学一类花费在设计patters两个星期,阅读四人帮书无济于事。 了解了每个服务模式,以及如何使用它们来适应我的问题是很困难对我来说,没有OO编程很多经验的开发人员。
这实在让人点击我这本书深入浅出设计模式 。 它首先呈现出的问题,不同的方法被认为是开发商,再怎么样,他们最终以修复它使用的设计模式。 它使用了非常简单的语言,并保持这本书非常耐看。
设计模式最终会被用来描述一个解决办法,但你不必你的类适应的解决方案。 他们认为更多的作为提出一个很好的解决了一系列广泛的问题的指南。
让我们来谈谈SOLID:
- 单人的责任 。 一个类应该只有一个责任。 这意味着,例如,一个Person类应该只担心关于人本身的领域问题,而不是为例,其持久性数据库。 对于这一点,你可能想使用的PersonDAO例如。 一个Person类可能希望保留其责任它可以在最短的。 如果一个类使用过多的外部依赖(即,其他类),这是这个类有太多的责任症状。 当开发人员尝试使用对象的现实世界模型,然后把它太远了这个问题常来。 松散耦合的应用程序往往不是很容易地浏览和不准确的模型现实世界中是如何工作的。
- 打开闭合 。 类应该是可扩展的,但不能修改。 这意味着,添加一个新的领域一类是好的,但改变现有的东西都没有。 在程序中的其他组件可能依赖于所述场。
- Liskov替换 。 一个期望,如果一个子类的狗和猫子传递型动物的对象应该工作的类。 这意味着,动物不应该有一个叫做树皮例如方法,因为猫类的子类将无法吠叫。 使用动物类的类,也不能依赖于属于一类犬的方法。 不要做这样的事情“如果这个动物是狗,然后(蒙上动物狗)的树皮。如果动物是一只猫,然后(蒙上动物猫)喵”。
- 接口隔离原则 。 让你的界面最小的就可以了。 老师那也是一个学生应该同时实现IStudent和ITeacher接口,而不是所谓的IStudentAndTeacher一个大的界面。
- 依赖倒置原则 。 对象不应该实例化它们的依赖,但他们应该传递给他们。 例如,这里面有一个引擎对象车不应该做引擎=新DieselEngine(),而该发动机应该传递给它的构造函数。 这样,汽车类不会被耦合到DieselEngine类。
文章来源: Can't seem to understand SOLID principles and design patterns [closed]