新手快速自学软件开发的详细步骤 软件设计开发怎么样

在软件开发中,前人已经总结了一些软件系统设计和开发的原则和模型 。无论使用什么语言进行开发,都会为我们的系统设计和开发提供指导 。本文将主要总结这些共同原则,并阐述其意义 。
发展原则
有五个基本的面向对象原则(solid),但除了这五个,还有迪米特里定律和合成重用原则等 。,所以常见的文章有六七条原则;除此之外,我还会给出一些网上出现的其他相关书籍和原理;
的单一责任SRP
单责原则,一个类,最好只做一件事,只有一件事引起它的变化 。单一责任原则可以看作是面向对象原则中低耦合、高内聚的延伸,将责任定义为变更的原因,从而提高内聚性,减少变更的原因 。
定义
一个对象应该只包含一个责任,这个责任完全封装在一个类中 。(每个对象都应该有一个单独的责任,并且这个责任应该被类完全封装 。),也就是定义了换类的理由只有一个 。点击此处查看9个高可用性架构设计方案的详细说明 。
原理分析
一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作 。类的职责主要包括两个方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现 。单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构手法中都能找到它的存在,它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验 。优势
降低类的复杂性,类的职责清晰明确 。比如数据职责和行为职责清晰明确 。提高类的可读性和维护性, 变更引起的风险减低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助 。注:单duty原理为编程提出了一个标准,用“duty”或“change reason”来衡量接口或类的设计是否合理 。但是“职务”和“变更事由”并没有具体的标准 。一个班级应该负责哪些职责?这些职责是如何细化的?细化后一定要有接口或者类吗?这些都需要从实际情况考虑 。它因项目和环境而异 。
例子
SpringMVC中实体、Dao、服务、控制器和util的分离 。
O开闭原则OCP
开放-封闭原则,OCP,对扩展开放,对修改封闭(设计模式的核心原则)
定义
软件实体(如类、模块和函数)应该对扩展开放,对修改封闭 。这意味着在一个系统或模块中,它对扩展是开放的,对修改是封闭的 。一个好的系统可以在不修改源代码的情况下扩展你的功能 。抽象是实现开放封闭原则的关键 。
原理分析
当软件实体因需求要变化时, 尽量通过扩展已有软件实体,可以提供新的行为,以满足对软件的新的需求,而不是修改已有的代码,使变化中的软件有一定的适应性和灵活性。已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性 。实现开闭原则的关键就是抽象化 :在”开-闭”原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在”开-闭”原则中扮演着极其重要的角色..即要预知可能变化的需求.又预见所有可能已知的扩展..所以在这里”抽象化”是关键!可变性的封闭原则:找到系统的可变因素,将它封装起来. 这是对”开-闭”原则最好的实现. 不要把你的可变因素放在多个类中,或者散落在程序的各个角落. 你应该将可变的因素,封套起来..并且切忌不要把所用的可变因素封套在一起. 最好的解决办法是,分块封套你的可变因素!避免超大类,超长类,超长方法的出现!!给你的程序增加艺术气息,将程序艺术化是我们的目标!例子
在设计模式中,模板方法模式和观察者模式都是开闭原则的优秀体现 。点击此处查看9个高可用性架构设计方案的详细说明 。
【新手快速自学软件开发的详细步骤 软件设计开发怎么样】L里希特替换原理LSP
Lis替换原则,LSP:基类能出现的地方,子类也能出现;这种思想表现为继承机制的约束规范 。只有子类可以替换其基类,系统才能在运行时识别子类,这是保证继承重用的基础 。
定义
第一种定义比较严格:如果对于每一个S类型的对象o1,都有一个T类型的对象o2,使得当所有对象o1都被o2替代时,T定义的所有程序P的行为不变,那么S类型就是T类型的一个子类型 。


推荐阅读