前言 我常常觉得人们低估了设计模式的作用和意义。它们不仅是简历上的金边、程序员的黑话,也不仅是常见业务的常用处理方式或经验总结。 设计模式不仅是这些,它们更是面向对象思想理论结合实践的切入点。我们前面聊过抽象、高内聚低耦合、封装继承多态、SOLID设计原则。它们更偏理论指导,离编码实践还有一段距离。而这里要聊的设计模式,不仅有扎实的理论基础,而且实实在在地俯下身子、扎根到了实践当中。 从编码实践的
常用设计模式——及其与面向对象设计的关系前言我常常觉得人们低估了设计模式的作用和意义。它们不仅是简历上的金边、程序员的黑话,也不仅是常见业务的常用处理方式或经验总结。设计模式不仅是这些,它们更是面向对象思想理论结合实践的切入点。我们前面聊过抽象、高内聚低耦合、封装继承多态、SOLID设计原则。它们更偏理论指导,离编码实践还有一段距离。而这里要聊的设计模式,不仅有扎实的理论基础,而且实实在在地俯下身
前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。↑ 五个,再加一个,就是5+1个。哈哈哈。↑这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即
前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。↑ 五个,再加一个,就是5+1个。哈哈哈。↑这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所
前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。↑ 五个,再加一个,就是5+1个。哈哈哈。↑这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以
聊聊幂等
实际上,接口隔离原则的定义其实是这样的: Clients should not be forced to depend upon interfaces that they do not use.
前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。↑ 五个,再加一个,就是5+1个。哈哈哈。这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使
[5+1]里氏替换原则(一)前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者codereview的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使你能说出来某段代
[5+1]开闭原则(二)前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。↑ 五个,再加一个,就是5+1个。哈哈哈。这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模
[5+1]开闭原则(一)前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者codereview的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使你能说出来某段代码违
数据库第三范式的定义,是这样的:Atableisinathirdnormalformwhenthefollowingconditionsaremet-Itisinsecondnormalform.Allnonprimaryfieldsaredependentontheprimarykey.——https://www.tutorialspoint.com/sql/third-normal-form.
系统中的业务异常搭建系统框架时,关于异常,我们一般要考虑这样几件事情。系统中有哪些异常这个问题其实很简单:一类是业务异常,例如“用户输入的证件号不合法”、“银行卡四要素鉴权失败”、“余额不足”等业务逻辑上的问题;除此之外的全都是系统异常,例如网络超时、数据库锁超时、甚至堆栈溢出内存溢出等等。业务异常中,有几种特殊的异常。当我们是通过类似乐观锁的方式来检测幂等时,在流程中任何一点上都有可能发现当前
前言面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者codereview的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使你能说出来某段代码违反了某项原则,常常也很难
将JavaWeb系统分为Controller/Service/Dao等层次,已经是开发们的习惯了。在这种分层思想的指导下,系统内的包结构一般都是这样的:当然,有时候bean、dao会被命名为model、pojo或者mapper,虽然名称各异,但含义相近。如果分层较细,可能还会有business、jms或者task这样的包。在这种这种包结构中,某一项功能(如用户管理功能)的代码被拆分成Control
——“面向对象的三大特性是什么?”——“封装、继承、多态。”这大概是最容易回答的面试题了。但是,封装、继承、多态到底是什么?它们在面向对象中起到了什么样的作用呢?
——“面向对象的三大特性是什么?”——“封装、继承、多态。”这大概是最容易回答的面试题了。但是,封装、继承、多态到底是什么?它们在面向对象中起到了什么样的作用呢?继承继承(inherit)关系是对象之间的一种层级结构关系。在这个层级结构中,低层级的对象可以获得、也可以修改高层级对象所定义的一些行为和数据。其中,低层级对象“获得”高层级对象的行为和数据的这个动作,也被称为“继承”(做动词用)。↑ 小
——“面向对象的三大特性是什么?”——“封装、继承、多态。”这大概是最容易回答的面试题了。但是,封装、继承、多态到底是什么?它们在面向对象中起到了什么样的作用呢?封装“封装”这个词是从Encapsulate翻译过来的,我觉得这个翻译简直太妙了:“封装”,一“封”一“装”。“封”就是信息隐藏,不想公开的数据、方法都隐藏在对象内部。“装”就是把数据和方法都放到一个对象中。↑ 琥珀就是一种非常美的“封装
背景项目我们的这个项目背景比较简单,本质上是为业务部门做一个类OA系统。它的功能主要是把一些线下的工作流程转到线上处理。只不过与一般的行政管理流程相比,它涉及的业务专业知识更多、处理流程也更复杂。有一点必须特别指出:我们组是中途接手、而非从零开始做这个项目的。在我们组接手时,这个项目已经完成了一半左右的需求。之所以强调这一点,是因为有人认为敏捷模式更适合于做新项目,而非接手老项目。但我认为并非如此
如果有人问“计划会、每日站会、回顾会中只能留一个,你会留哪个”,我一定会选回顾会。计划会和每日站会的目标是保证项目进度,而回顾会的目标是改进项目组。我们的流程特点从流程来说,回顾会非常简单:定期地把大家聚到一起,或三言两语地吐一番槽,或七嘴八舌地甩一通锅,然后就各回各家各找各妈。但是显然,这种回顾会对项目组的成长没有什么帮助。甩锅一时爽……然而解决不了任何实际问题从流程来说,我们项目组的回顾会有几
spring事务基本配置参见:http://www.cnblogs.com/leiOOlei/p/3725911.htmlspring事务传播机制参见:http://www.cnblogs.com/aurawing/articles/1887030.html简单说一下new和nested的区别。使用new的时候,外层事务的提交或回滚,与new的事务没有关系。而使用nested时,内层事务最终是提交
抽象这个东西,说起来很抽象,其实很简单。WHAT抽象是什么?按维基百科的说法:“在计算机科学中,抽象化(英语:Abstraction)是将数据与程序以它的语义来呈现出它的外观,但是隐藏起它的实现细节。”这个定义也许还有些“抽象”,举几个例子来看,它其实简单。“抽象”在我们的日常工作和生活中比比皆是。例如,我们经常会说,“我是一个开发”,“这事儿你得找产品”,这里的“开发”、“产品”,都是一种抽象。
高内聚和低耦合是很原则性、很“务虚”的概念。为了更好的讨论具体技术,我们有必要再多了解一些高内聚低耦合的度量标准。这一篇与《细说几种内聚》是姊妹篇。可以对照着看。花园的景昕,公众号:景昕的花园细说几种内聚耦合 耦合性讨论的是模块与模块之间的关系。同样参考维基百科,我们来看看耦合都有哪几种。Content coupling:内容耦合Content coupling is said to
高内聚和低耦合是很原则性、很“务虚”的概念。为了更好的讨论具体技术,我们有必要再多了解一些高内聚低耦合的度量标准。 这里先说说几种内聚。
"高内聚"与"低耦合"是软件设计和开发中经常出现的一对概念。它们既是做好设计的途径,也是评价设计好坏的标准。
一次技术分享的笔记:Feign简介
51CTO识别有违禁词,请移步:https://mp.weixin.qq.com/s?__biz=MzUzNzk0NjI1NQ==&mid=2247484223&idx=1&sn=b172b7793f8a382b376ba3316ff66799&chksm=fade72dfcda9fbc917c99e57e95cd6e4fb24920bfbf3aee70f5d6ad
知乎上有个问答:大家的公司的 Code Review 都是怎么做的?遇到过哪些问题?很多答主都提到Code Review的作用是提前发现bug、提高代码质量,顺带统一团队编码规范等等。秀一下我们的几次CodeReview。提前发现bug当了爸妈了之后,人都难免有“不让孩子再吃自己吃过的苦”这样的想法。其实reviewer也会有这种“老父亲/老母亲”的心理:“不让别人再踩自己踩过的坑”。比如这段讨论
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号