软件开发原则
原则1:不要重复自己(Don’t Repeat Yourself,DRY原则)
这个原则非常重要,换言之,就是不要写重复的代码。
原则2:尽量简单、一目了然(Keep it Simple Stupid,KISS原则)
所以做到简单的同时,还要做到一目了然。你也可以这样理解,将一个软件做得连白痴都会用。这就是用户体验的最高境界了。如何做到简单且一目了然呢?这要归结到软件开发的可维护性和可理解性
原则3:适可而止(You Ain’t Gonna Need It,YAGNI原则)
YAGNI原则指的是只需要将应用程序必需的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。 在一个软件项目中,往往80%的时间花费在20%的功能上。当你准备列出一个项目清单时,试着考虑以下问题:
通过降低抽象的层级,来实现低复杂度,根据特性将功能独立出来,适度接受非功能性需求,识别耗时的任务,并摆脱它们
为什么要知道面向对象的基本原则呢? 因为我们考察一个设计模式好不好, 一个设计优秀不优秀, 用基本原则来检验.
1.单一职责原则(SRP)
单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。它的英文缩写是SRP,英文全称是Single Responsibility Principle。
其实单一职责原则的意思就是开发人员经常说的"高内聚、低耦合"。也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。
2.开闭原则(OCP)
开闭原则的核心思想就是:一个对象对扩展开放,对修改关闭。它的英文缩写是OCP,英文全称是Open for Extension,Closed for Modification。
其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何才能做到这一点呢?这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现层则是可以改变和扩展的。
3.里氏替换原则(LSP)
里氏替换原则的核心思想就是:在任何父类出现的地方都可以用它的子类来替代。它的英文缩写是LSP,英文全称是Liskov Substitution Principle。
其实里氏替换原则的意思就是:同一个继承体系中的对象应该有共同的行为特征。里氏代换原则关注的是怎样良好地使用继承,也就是说不要滥用继承,它是继承复用的基石。
4.依赖注入原则(DIP)
依赖注入原则的核心思想就是:要依赖于抽象,不要依赖于具体的实现。它的英文缩写是DIP,英文全称是Dependence Inversion Principle。
其实依赖注入原则的意思就是:在应用程序中,所有的类如果使用或依赖于其他的类,则都应该依赖于这些其他类的抽象类,而不是这些其他类的具体实现类。抽象层次应该不依赖于具体的实现细节,这样才能保证系统的可复用性和可维护性。为了实现这一原则,就要求开发人员在编程时要针对接口编程,而不针对实现编程。
5.接口分离原则(ISP)
接口分离原则的核心思想就是:不应该强迫客户程序依赖它们不需要使用的方法。它的英文缩写是ISP,英文全称是Interface Segregation Principle。
其实接口分离原则的意思就是:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口当中。
6.迪米特原则(LOD)
迪米特原则的核心思想就是:一个对象应当对其他对象尽可能少的了解。它的英文缩写是LOD,英文全称是Law of Demeter。
其实迪米特原则的意思就是:降低各个对象之间的耦合,提高系统的可维护性。在模块之间,应该只通过接口来通信,而不理会模块的内部工作原理,它可以使各个模块耦合程度降到最低,促进软件的复用。
7.优先使用组合而不是继承原则(CARP)
优先使用组合而不是继承原则的核心思想就是:优先使用组合,而不是继承。它的英文缩写是CARP,英文全称是Composite/Aggregate Reuse Principle。
其实优先使用组合而不是继承原则的意思就是:在复用对象的时候,要优先考虑使用组合,而不是继承,这是因为在使用继承时,父类的任何改变都可能影响子类的行为,而在使用组合时,是通过获得对其他对象的引用而在运行时刻动态定义的,有助于保持每个类的单一职责原则。
更多原则不一一细说. 而且如果没在实践中体会他们, 记住文字定义也没有意义.
创建型:
1. 单件模式(Singleton Pattern)
2. 抽象工厂(Abstract Factory)
3. 建造者模式(Builder)
4. 工厂方法模式(Factory Method)
5. 原型模式(Prototype)
结构型 :
6. 适配器模式(Adapter Pattern)
7. 桥接模式(Bridge Pattern)
8. 装饰模式(Decorator Pattern)
9. 组合模式(Composite Pattern)
10. 外观模式(Facade Pattern)
11. 享元模式(Flyweight Pattern)
12. 代理模式(Proxy Pattern)
13. 模板方法(Template Method)
14. 命令模式(Command Pattern)
15. 迭代器模式(Iterator Pattern)
行为型 :
16. 观察者模式(Observer Pattern)
17. 解释器模式(Interpreter Pattern)
18. 中介者模式(Mediator Pattern)
19. 职责链模式(Chain of Responsibility Pattern)
20. 备忘录模式(Memento Pattern)
21. 策略模式(Strategy Pattern)
22. 访问者模式(Visitor Pattern)
23. 状态模式(State Pattern)
http://designpatternsphp.readthedocs.io/zh_CN/latest/README.html
相关推荐
《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...
面向对象编程的四大基本原则是封装、抽象、继承和多态性。 封装是指将对象的实现细节隐藏起来,只暴露对外接口。这有助于减少程序各部分之间的依赖,使得代码更加易于维护。 抽象指的是隐藏复杂的现实情况,只保留...
### 设计模式 - 可复用面向对象软件的基础 #### 引言与背景 面向对象编程(OOP)自诞生以来一直是软件开发领域中的一个重要范式。随着软件系统的复杂度不断提升,如何有效地组织代码,使其既能够满足当前的需求又...
首先,我们需要理解面向对象设计的基本原则,这些原则是设计模式的基础。它们包括: 1. 单一职责原则(SRP):一个类或模块应只有一个改变的原因。这有助于保持代码的模块化,降低耦合度。 2. 开放封闭原则(OCP)...
面向对象设计模式与原则”的视频讲座中,我们很可能会深入探讨以下几个核心知识点: 1. **设计模式的基本概念**:首先,会介绍设计模式的概念,它是经验的总结,一种解决特定问题的通用可重用方案。设计模式并不...
GoF23种设计模式至今仍然是学习面向对象设计模式的重要资源,但它们并不代表所有可能的设计模式。实际上,随着软件工程的发展,新的设计模式也在不断涌现。 #### 设计模式与面向对象 面向对象设计模式着重解决的是...
在C++中,设计模式的应用通常涉及到面向对象编程的特性,如继承、封装和多态。Qt4框架则为这些模式提供了实现基础。例如,Qt4的信号与槽机制(Signals & Slots)可以很好地支持观察者模式,使得对象间能动态地建立和...
### 23种设计模式详解 #### 一、设计模式概览 ...以上是对23种设计模式中一部分模式的基本概述,每种模式都有其特定的应用场景和优点,了解和掌握这些设计模式对于提高软件质量和开发效率具有重要意义。
总结来说,这本书是面向C++程序员的一份宝贵资源,它深入探讨了设计模式的理论与实践,通过具体的案例分析,帮助读者掌握面向对象设计的核心原则。无论是初学者还是经验丰富的开发者,都可以从中受益,提升自己的...
在"C#面向对象设计模式与原则"的Webcast课程中,我们将深入探讨23种经典的设计模式,并结合C#语言的特点,理解它们的应用场景和实现方式。 首先,让我们了解面向对象设计的基本原则,它们包括单一职责原则(SRP)、开...
设计模式是软件工程中一种非常重要的概念,它代表了在特定情境下解决常见问题的最佳实践。这些模式来自于经验丰富的开发者们在长期实践中总结出的通用解决方案,被广泛应用于面向对象编程中,以提高代码的可读性、可...
通过学习和掌握这些设计模式,开发者可以更好地理解和应用面向对象的设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。这些原则和模式的结合,可以帮助我们构建出更加模块化、可扩展...
### C++设计模式课件2_面向对象设计原则 #### 面向对象设计原则概述 面向对象设计原则是软件工程领域中为了提高代码质量、增强软件系统的可维护性和可扩展性而制定的一系列指导原则。这些原则有助于开发人员更好地...
装饰模式是一种结构型设计模式,它是面向对象设计中用来动态添加或修改对象功能的一种方法。在软件工程中,装饰模式允许我们向一个现有的对象添加新的行为或职责,同时又不改变其原有的结构,从而实现对类的功能扩展...
### C#面向对象设计模式知识点解析 #### 面向对象设计模式与原则 ...然而,设计模式并不是万能的,它们不是简单地可以套用的模板,而是需要在理解面向对象基本原理的基础上,根据具体问题灵活运用的工具。
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立进行变化。这种模式在软件工程中被广泛...对于初学者来说,通过学习和实践桥接模式,可以提高软件设计能力,更好地理解面向对象设计原则。
### 设计模式基础培训材料-面向对象设计原则与模式 ...以上概述了面向对象设计的基本原则以及23种设计模式,并通过Qt框架中的实例进行了简要说明。理解和应用这些原则和模式对于构建高质量的软件系统至关重要。
### 设计模式:可复用面向对象的软件基础 #### 引言:设计模式的意义与重要性 设计模式,作为面向对象编程领域的基石之一,旨在为软件开发人员提供一套标准化的解决方案,用以应对在软件设计过程中反复出现的挑战...