![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件工程
文章平均质量分 83
云计算&大数据
这个作者很懒,什么都没留下…
展开
-
Activiti命令拦截器和设计模式
使用场景每个对流程的操作都可以看成一个命令command,Activiti会对每个命令进行拦截处理,Activiti的命令拦截用到了命令模式和责任链模式,命令模式的本质在于将命令进行封装,发出命令和执行命令分离;职责链模式只需要将请求放入职责链上,其处理细节和传递都不需要考虑;执行入口commandExecutor是命令执行的入口。在命令来临时,service会调用commandExecutor的execute方法,例如runtimeService。所以commandExecutor是命令执行的原创 2022-02-08 00:50:56 · 915 阅读 · 0 评论 -
PO,BO,VO和POJO的区别
1.PO:persistent object 持久对象1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。2 .在hibernate持久化框架中与insert/delet操作密切相关。3 .PO中不应该包含任何对数据库的操作。2.POJO :plain ordinary java object 无规则简单java对象一个中间对象,可以转化为PO、DTO、VO。1 .POJO持久化之后==〉PO(在运行期,由Hibernate中的cglib动态原创 2021-02-02 12:26:32 · 184 阅读 · 0 评论 -
15.工厂方法模式(详解版)
在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本节要讨论的问题。在《简单工厂模式》一节我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。优点原创 2021-01-30 07:41:40 · 546 阅读 · 0 评论 -
14.简单工厂模式
现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)。我们的项目代码同样是由简到繁一步一步迭代而来的,但对于调用者来说,却越来越简单。在日常开发中,凡是需要生成复杂对象的地方,都可以尝试考虑使用工厂模式来代替。注意:上述复杂对象指的是类的构造函数参数过多等对类的构造有影响的情况,因为类的构造过于复杂,如果直接在其他业务类内使用,则两者的耦合过重,后续业务更改,就需要在任何引用该类的源代码内进行更改,光是原创 2021-01-29 17:19:00 · 111 阅读 · 0 评论 -
13.原型模式(原型设计模式)详解
在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制原创 2021-01-29 17:09:30 · 445 阅读 · 0 评论 -
12.单例模式(单例设计模式)详解
在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。单例模式的定义与特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的原创 2021-01-29 16:52:57 · 337 阅读 · 0 评论 -
10.合成复用原则——面向对象设计原则
合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍。合成复用原则的定义合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。原创 2021-01-29 16:28:35 · 538 阅读 · 1 评论 -
9.迪米特法则——面向对象设计原则
前几节分别详细介绍了面向对象设计原则中的开闭原则、里氏替换原则、依赖倒置原则、单一职责原则和接口隔离原则,本节将详细介绍迪米特法则。迪米特法则的定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因原创 2021-01-29 16:26:22 · 176 阅读 · 0 评论 -
8.接口隔离原则——面向对象设计原则
面向对象设计原则除了开闭原则、里氏替换原则、依赖倒置原则和单一职责原则以外,还有接口隔离原则、迪米特法则和合成复用原则。本节将详细介绍接口隔离原则。接口隔离原则的定义接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2002 年罗伯特·C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to dep原创 2021-01-29 16:21:07 · 426 阅读 · 0 评论 -
7.单一职责原则——面向对象设计原则
单一职责原则也是面向对象设计原则中的一条,下面我们就来详细地对其进行介绍。单一职责原则的定义单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a clas原创 2021-01-29 16:14:09 · 110 阅读 · 0 评论 -
6.依赖倒置原则——面向对象设计原则
前两节我们详细介绍了面向对象设计原则中的开闭原则和里氏替换原则,在本节中我们来介绍依赖倒置原则。依赖倒置原则的定义依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldn原创 2021-01-29 16:08:45 · 125 阅读 · 3 评论 -
5.里氏替换原则——面向对象设计原则
在上一节《开闭原则》中,我们详细介绍了开闭原则,本节我们来介绍里式替换原则。里氏替换原则的定义里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensur原创 2021-01-29 16:00:30 · 153 阅读 · 0 评论 -
4.开闭原则——面向对象设计原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面的几节中依次来介绍这 7 条原则,本节首先介绍开闭原则。开闭原则的定义开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当原创 2021-01-20 00:22:19 · 122 阅读 · 0 评论 -
3.UML中的类图及类图之间的关系
统一建模语言简介统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简明,进一步缩短了设计时间,减少开发成本。它的应用领域很宽,不仅适合于一般系统的开发,而且适合于并行与分布式系统的建原创 2021-01-19 09:20:19 · 258 阅读 · 0 评论 -
2.GoF 的 23 种设计模式
设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。1. 根据目的来分根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。行为型模式:用于描述原创 2021-01-19 09:09:36 · 143 阅读 · 0 评论 -
1.软件设计模式概述
本文从整体上介绍软件设计模式的概念与特点、软件设计模式的基本要素,以及 GoF 的 23 种设计模式简介。软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设原创 2021-01-19 08:43:41 · 180 阅读 · 0 评论 -
Java设计模式:23种设计模式全面解析(超级详细)
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称「GoF设计模式」。这 23 种设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性,以及类的关联关系和组合原创 2021-01-19 08:04:52 · 197 阅读 · 0 评论 -
史上最烂的开发项目长啥样:苦撑12年,600多万行代码...
导读:你见过最烂的项目,撑了多长时间才完蛋?六个月?一年?今天介绍的这个奇葩项目,不但一开始就烂得透透的,还硬撑了12年多,直到项目负责人被逮起来丢进监狱才完事。到底有多烂?用下面这组触目惊心的数据告诉你:总共 600 多万行 C++ 代码总共 50000 多个类受编译器版本限制,用的 C++ 语法都是陈旧过时的,只能在某个(早就没有维护)的操作系统上部署基于 CORBA采用的数据库软件来自一家早就破产的公司好几层互相叠加的层共同组成了用户界面,而且这些层没有一个是由原作者维护的运行一个用原创 2021-01-10 19:10:25 · 246 阅读 · 1 评论