
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内java编程开发等互联网课程,而本文我们就再来了解一下,java编程设计模式基本原则与应用分析。
抽象和普遍规律
回头看再看之前提到的标准开发流程,其实是一套从抽象到具体的流程,无论概要设计中的分层,还是详细设计中模块的解耦,都是为了降低单个层、模块的影响因子,减少实现时的心智消耗。
从上面的例子可以看出,相较于自底向上,自顶向下的方式在实现逻辑上更为清晰,也更贴近从抽象到具体的实现方式;当一开始就拥有一个抽象的模型时,更容易提取出其中不变的部分,后续有新的需求拓展时,抽象的部分基本不需要太大的改动。
具体到业务开发时,对于新需求的不断拓展,通常有两种迭代模式:
先实现新的需求,后续优化过程中总结需求的相似点,重构代码
一开始做好设计,新需求仅需要注入功能代码,不需要对老代码作较大改动
一种迭代模式,往往在开始实现功能时,都没有采用自顶向下的实现方式,但即使采用了自顶向下的实现方式,也需要利用设计模式进行解耦,才能实现二种迭代模式。
设计模式基本原则
设计的目的
对机器而言,代码的好坏由时间、空间的复杂度决定。对人而言,良好的抽象和封装降低了代码对人的复杂度。
代码设计的目的是为了写出对人而言,更简洁、更容易复用的代码。
简洁性
对于一个任务,如果有着清晰的输入和输出,需要考虑的外部因素尽可能少,且职责单一,那么可以任务这项任务足够简洁。
高复用
复用包括面向现有需求(可复用)和面向未来需求(可拓展)。前面提到了归纳普遍规律,普遍规律无疑是可复用的,因此在设计之初就应当遵守自顶向下从抽象到具体的设计方式,以便更好的归纳出可复用的点
基本原则
明确设计的目的后,再看七大基本原则:
开闭原则
对扩展开放,对修改关闭
以之前[自底向上和自顶向下]()章节例子来说,自顶向下法后生成的公式建造器无疑是符合开闭原则的,无论后续需要生成什么递推式,都无需修改建造器内容,只需要拓展公式模板
面对复杂业务时,如果能做到抽象出一条主线,再将主线中不确定的部分(变化的部分)交由外部实现,主线看做封闭部分,需要外部实现的内容作为开发部分,后的结构都会符合开闭原则
里氏代换原则
只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为
对实现抽象化的具体步骤的规范。父类的定义是大纲,子类的具体实现不应超过大纲规定的范围
依赖倒转原则
具体依赖于抽象,而不能反过来
自顶向下的实现方式是一个从抽象到具体的过程,每一层抽象都只能依赖于上层的抽象,而不能依赖下一层的具体实现。
接口隔离原则
使用多个隔离的接口,比使用单个接口要好
迪米特法则(少知道原则)
一个实体应当尽量少的与其他实体之间发生相互作用
单一职责原则
一个类只负责一个功能领域中的相应职责
合成复用原则
组合优于继承
归纳
前面总结了设计的目的是为了简洁性和高复用,若将七大基本原则进行划分,可以大致理解为:
提高可复用性
包含原则:开闭原则、里氏代换原则、依赖倒转原则。
面对复杂业务时,先按照开闭原则,理清主线,将内容划分成不变的部分(主线,抽象的业务)和变化的部分(具体的业务)。
为了抽象业务和具体业务终都要转化成代码,我们需要一层层的具体实现,实现过程中,遵循里氏代换原则可保证实现不偏离规划,依赖倒转原则可以保证整体逻辑清晰。
提升简洁性
包含原则:接口隔离原则、迪米特法则、单一职责原则,合成复用原则。
业务拆分时,拆分后的子业务应保证职责单一,功能独立,输入输出固定,这样的子任务更容易整合和实现。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。