面向对象设计原则?

今天面试了,突然问到了面向对象的设计原则。当场蒙了,怎么也想不起来了。。。

惩罚自己写篇博客回忆一下

 面向对象五大设计原则:

 1.单一职责原则(Single-Resposibility Principle)

"对一个类而言,应该仅有一个引起它变化的原因。"

本原则是我们非常熟悉地"高内聚性原则"的引申,但是通过将"职责"极具创意地定义为"变化的原因",使得本原则极具操作性,尽显大师风范。同时,本原则还揭示了内聚性和耦合生,基本途径就是提高内聚性;如果一个类承担的职责过多,那么这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的履行。其实OOD的实质,就是合理地进行类的职责分配。

2.开放封闭原则(Open-Closed principle)

 "软件实体应该是可以扩展的,但是不可修改。"

本原则紧紧围绕变化展开,变化来临时,如果不必改动软件实体裁的源代码,就能扩充它的行为,那么这个软件实体设计就是满足开放封闭原则的。如果说我们预测到某种变化,或者某种变化发生了,我们应当创建抽象类来隔离以后发生的同类变化。在Java中,这种抽象是指抽象基类或接口;在C++中,这各抽象是指抽象基类或纯抽象基类。当然,没有对所有情况都贴切的模型,我们必须对软件实体应该面对的变化做出选择。

3.里氏替换原则(Liskov-Substituion Principle)

 "子类型必须能够替换掉它们的基类型。"

本原则和开放封闭原则关系密切,正是子类型的可替换性,才使得使用基类型模块无需修改就可扩充。Liskov替换原则从基于契约的设计演化而来,契约通过为每个方法声明"先验条件"和"后验条件";定义子类时,必须遵守这些"先验条件"和"后验条件"。当前基于契的设计发展势头正劲,对实现"软件工厂"的"组装生产"梦想是一个有力的支持。

4.依赖倒置原则(Dependecy-Inversion Principle)

 "抽象不应依赖于细节,细节应该依赖于抽象。"

本原则几乎就是软件设计的正本清源之道。因为人解决问题的思考过程是先抽象后具体,从笼统到细节,所以我们先生产出的势必是抽象程度比较高的实体,而后才是更加细节化的实体。于是,"细节依赖于抽象"就意味着后来的依赖于先前的,这是自然而然的重用之道。而且,抽象的实体代表着笼而统之的认识,人们总是比较容易正确认识它们,而且本身也是不易变的,依赖于它们是安全的。依赖倒置原则适应了人类认识过程的规律,是面向对象设计的标志所在。

5.接口分离原则(Interface-Segregation Principle)

"多个专用接口优于一个单一的通用接口。"

本原则是单一职责原则用于接口设计的自然结果。一个接口应该保证,实现该接口的实例对象可以只呈现为单一的角色;这样,当某个客户程序的要求发生变化,而迫使接口发生改变时,影响到其他客户程序的可能生性小。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象设计原则是软件工程中一组通用的设计指南,它们帮助开发者创建结构清晰、易于维护和可复用的软件系统。以下是几种常见的面向对象设计原则: 1. **单一职责原则(Single Responsibility Principle, SRP)**:每个类或模块应有且仅有一个明确的责任,确保其只关注一项特定任务。 2. **开放封闭原则(Open-Closed Principle, OCP)**:对于扩展开放,修改关闭。意味着增加新的功能时不应修改现有代码,而是通过继承、组合等方式扩展。 3. **里氏替换原则(Liskov Substitution Principle, LSP)**:子类可以替换掉它们的基类而不会影响程序的正确性,即子类必须能替换基类并保持原有行为。 4. **依赖倒置原则(Dependency Inversion Principle, DIP)**:高层模块不应该依赖于低层模块,两者都应依赖于抽象,这样降低模块间的耦合度。 5. **接口隔离原则(Interface Segregation Principle, ISP)**:客户端不应被迫依赖他们不需要的方法,应该为他们提供更小、更具体的接口。 6. **抽象工厂模式(Abstract Factory Pattern)**:定义一个接口,让子类决定实例化具体类的逻辑,隐藏了对象的创建过程。 7. **工厂方法模式(Factory Method Pattern)**:将对象的创建延迟到子类,让子类决定如何创建。 8. **策略模式(Strategy Pattern)**:定义一系列算法,并将每个算法封装在独立的类中,使它们可以相互替换。 遵循这些原则有助于创建更加灵活、可维护和可扩展的软件架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值