Java编程应该了解的事 - 设计模式、软件工程、项目管理

news/2024/7/4 9:56:19 标签: 设计模式, 编程, java, 项目管理, 扩展, 测试

设计模式

我们不难发现世间万物的发展基本都有一个起决定性作用的起始点。比如,基因会决定一个人的某些特质;本质决定现象;领导决定一个组织的发展。其实,就是本质。而编程思想的本质是什么呢?换句话说,对于我们提交的程序怎样来判断她的好坏优良呢?我们可能得到很多答案,但只从软件生命周期的角度来看,我想就是“可支持维护性的复用”。参考《Java与模式》

维护性:易扩展性,用于功能完善加强。Open对内。

复用性:说白了是通用性,在这能用,在别的地方也能用,因为接口已经定义好了,看接口你就会明白具备什么功能。Close对外开放接口。


高内聚低偶合,

工厂模式:

分离不变的和可变的

分离抽象的和具体的

分离引用和实现


适配器模式:

实现弱偶合


桥接模式:

将多继承的高偶合转为聚合,以解偶。


建造者模式:

分离引用和实现(结构复杂的实现)


责任链模式:

分离请求(相对不变,抽象)和接收(相对可变,具体):(同一对象动态接受多处理)









我们在学校还学过一个好的程序还需要稳定性、易读性。不过你能充分理解维护性和复用性即可做到稳定性和易读性,这也是本文为什么要说“可支持维护性的复用”是程序设计的本质。

某个模块当需要被修改时,其他的调用者同时都会受到牵连。这个模块需要被修改是出于维护性的需要,保证其他调用的地方不受牵连是出于复用性的的需要。也称之为解偶,高内聚地耦合。这个问题就是面向对象编程思想的一个出发点,起始点,本质。一个好的软件系统设计应该充分注意这个问题的处理。简单说就是,一个好的模块设计可以很好的完成自身的功能而被多次复用,同时自身功能的完善又不影响其复用。再从面向对象角度看就是,一个对象既可以通过暴露接口被任意调用,而同时对象内部的加强和完善又不影响其调用。

矛盾是事物发展的源头,从这个问题出发,我们就可以很好的理解面向对象编程思想和设计模式设计模式是针对不同情形,对此问题的具体处理方法。

最起码我们可以了解到接口设计远比代码实现重要的多。

 

软件工程:

老生常谈,需求分析、设计实现、测试、部署、运维

这里只从需求分析、设计的角度来看,本质是什么呢?

我个人认为就是,对象识别和业务流程(逻辑)的识别,这样说还是模糊。两个字概括就是 - 分类。有Java设计开发经验的应该明白,除非你做的不是面向对象编程

 

项目管理

本质是计划和分工。

设计人员只做接口设计,业务流程设计。这些人的经验一定要丰富,不是说考个架构师证就可以的,也不是说没有架构师证就不可以做。关键不在于证,而在于经验(技术经验、行业经验)和面向对象思想的理解。

程序员只是实现这些接口和调用这些接口实现类。


http://www.niftyadmin.cn/n/748911.html

相关文章

源码详解系列(七) ------ 全面讲解logback的使用和源码

什么是logback 热血小说 https://m.v1122.com logback 用于日志记录,可以将日志输出到控制台、文件、数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性。 logback 被分成三个不同的模…

JSPServlet - MVC2

这个图来源于Jsp&Servlet 核心编程那本书,稍微作了修改。理解了这个图基本就对Java项目开发入门了。 Browser 浏览器 Controller 控制器 Model 模型 View 视图 Web Container Web容器 Application Servier 应用程序服务器 VO(View Object) 视图对象 VO(V…

《前端之路》--- 重温 Koa2

目录 一、简单介绍二、 路由三、请求数据四、 静态资源加载五、 Koa2 使用 cookie/session六、 koa2加载模板引擎七、 koa2 中简单使用 mysql 数据库八、 koa2 中使用单元检测九、 node 服务端开发过程中的 开发 debug 方式十、总结一、简单介绍不格小说网 m.vbuge.com 1.1、快…

[W]和[V]的发音

V发音嘴型和F 一样,上齿轻抵下唇,W发音如中文的:我 W发音时,嘴成圆形,嘴唇隆起,(类似中文“喔”字);V发音时,要用上牙齿轻轻咬住下嘴唇的一半,然…

[i:]和[i]发音

其实在国际音标中 [ i ] 正确读音不是“衣”,简单说就是:“衣”这个音是在口腔的前半部发音,口型很随意,而发 [ i ]是先将口稍微张开成“一”字形,上下牙齿也稍稍张开,舌头随意地平放,最后把发“…

C#中Equals和GetHashCode

Equals和GetHashCode清风小说 www.198200.com Equals每个实现都必须遵循以下约定: 自反性(Reflexive): x.equals(x)必须返回true.对称性(Symmetric): x.equals(y)为true时,y.equals(x)也为true.传递性(Transitive): 对于任何非null的应用值x,y和z,如果x.equals(y)返回true,并且…

绿色版 MySQL 安装配置的正确操作步骤

文章主要向大家介绍的是绿色版 MySQL 安装配置的实际操作流程,我们是在MySQL5.1版的环境下对色版 MySQL进行正确的安装配置,以及对其具体的下载地址有一详细介绍,以下就是文章的详细内容介绍。 绿色版 MySQL 安装配置: 本人下载…

图像灰度变换、二值化、直方图

1、灰度变换 1)灰度图的线性变换 Gnew Fa * Gold Fb。 Fa为斜线的斜率,Fb为y轴上的截距。 Fa>1 输出图像的对比度变大,否则变小。 Fa1 Fb≠0时,图像的灰度上移或下移,效果为图像变亮或变暗。 Fa-1&#xff…