离职了,在家温故而知新----1 设计模式 & 开头
工作四年有余,编写的代码都是业务代码。不涉及低层。
目前离职在家,过年完了,准备找工作了。
决定温故而知新,复习也是学习。
本着随遇而安的原则,随便从之前设计的众多条目中选择了一条开始复习。
设计模式
我本身并不是计算机科学系的专业,一焊电路板专业的,唯一与代码相关的是在大学学过公共的C语言基础。
复习就不多BB以前的东西了。
总结过往:
工作中使用到设计模式的地方还是有不少的,只不过疏于归纳与统计。
同时也是由于工作中需要满足的情况往往比较复杂与实际,所以多使用的混合多种模式的设计模式。
我这里想特别的说一下自己看法:
所谓的设计模式,其实更多是前人多各种编程集成方案的归纳和总结,冠以形象的名称方便后人套用。
但归根结底,无非是由语言特性的支持,加上面向对象、面向函数、面向接口的思想,组合而成的连招。
过于拘泥于招式本身,就脱离了设计模式的初衷了。
封装,接口的实现,反射,有这些东西,无所谓设计模式。
一样能达到低耦合,高复用,易扩展易维护的目的。而设计模式不也是这个目的么。
学习总结:
我这里不细讲设计模式的具体内容,(我自己看的这本书《大话设计模式》)
只总结设计模式的核心依赖技术,与实现需求的大原则。
所谓核心:
抽象,封装,继承,多态,反射
所谓原则:
1、开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。(对抽象编程,不对具体编程。已达到易扩展易为维护的目的)
2、单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。(功能原子化,最小粒度化。讲单一的功能封装到类或模块中,提供接口给外部调用)
3、依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
4、里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。(后面复制的百度,我这里总结一句话,想想Spring属性注入,为什么在被注入的类中,声明属性的时候总是并且一定是以接口声明) 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
5、合成/聚合复用原则(CARP),说简单点,继承复用少用,因为破坏了父类的封装。多用接口的实现。
6、迪米特法则(Law of Demeter)又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。(说白了,另一种减少耦合的思想)
以上的原则,可以自己去百度。我一句话总结下:
1、少用继承多用实现(这样才能灵活)
2、功能最小粒度化,实现原子封装(这样才好复用好扩展)
3、面向协议开发,面向接口开发,抓住头尾即可(入参出参或者请求回调都是如此)

离职了,在家温故而知新----1 设计模式 & 开头的更多相关文章
- 2020 重新出发,JAVA 学习计划
------ @[toc]# 前言 我呢已经工作七年了,一直没有换工作,因为我这个人没什么太大的野心,安安稳稳的生活就挺好,目前的公司虽然福利一般,但是工作稳定,环境也都很熟悉了. 但是今年,到目前为 ...
- MVC缓存
MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...
- Hammer.js
一.前言 移动端框架当前还处在初级阶段,但相对于移动端的应用来说已经有很长时间了.虽然暂时还没有PC端开发的需求量大,但移动端的Web必然是一种趋势,在接触移动端脚本的过程中,最开始想到的是juqer ...
- jquery触屏幻灯片
一.前言 去年接触了移动Web开发,做了些手机端的网站及应用,还有些小的微信游戏和活动页面.每个项目里或多或少的都会有一些触屏事件等.其中有两个用到了jquery触屏幻灯片.刚开始的时候也在百度上搜索 ...
- 无废话WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- 无废话SharePoint入门教程四[创建SharePoint母版页]
一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建HTML页面 2.将HTML文件转换为SharePoint母版页 3.在 SPD中修改母版页“PlaceHolderMai ...
- 无废话SharePoint入门教程一[SharePoint概述]
一.前言 听说SharePoint也有一段时间了,可一直处在门外.最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发.但苦于网上SharePoint入门的东西实在太少,导致 ...
- IHttpHandler的那些事
写在前面 从上家公司离职,在家休息,闲着无聊,觉得还是有必要将IHttpHanlder的内容,做一个总结.发现在写demo的过程中,总觉得有点生疏了,项目中很少使用自定义的类来实现该接口.当然,一般处 ...
- C++中一个类(非继承类)对象,所占内存空间大小
离职后在家里带了半年多了,这半年多里没有编写过一行代码,倒是看过一些书,但是差不多也都是囫圃吞枣.房子也快要装修,也得赶快找一个工作了,不然养车,还要玩摄影,没收入的日子真是不好过啊.呵呵. 按惯例, ...
随机推荐
- tensorflow的Virtualenv安装方式安装
本文介绍了如何在ubuntu上以virtualenv方式安装tensorflow. 安装pip和virtualenv: # Ubuntu/Linux 64-bit sudo apt-get insta ...
- ibatis一对多 数据库设计及实现
iBatis的多表关联. ibatis的表关联,和数据库语句无关,是在Java程序中,把若干语句的结果关联到一起.这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便. 这里 ...
- HUST 1351 Group
(莫名其妙的被一个叫布布扣的网站收录了......什么鬼) 简单DP.dp[i][j]表示把前i个数字分成j段的最优解, 递推式很容易写: (其中sum[]是前缀和:p <= i - L,并且前 ...
- MySQL 同步状态
Exec_Master_Log_Pos: The position of the last event executed by the SQL thread from the master's bin ...
- SD卡兼容性问题(转)
看到一篇关于硬件抗干扰的应用实例,很有参考值.所以,转过来方便查找. 源文:SD卡兼容性问题 最近碰到了一个SD卡兼容性的问题.主芯片SD卡组的信号,经过转接板,长排线,然后再到SD卡子板之后.对多种 ...
- jQuery插件的开发
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- 微信小程序之----组件
1.view 把文档分割为独立的.不同的部分. view组件类似于html中的div标签,默认为块级元素,独占一行,可以通过设置display:inline-block改为行级元素. view.wxm ...
- 结合实际项目分析pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Android px、dp和sp单位区别
[转]http://www.cnblogs.com/bjzhanghao/archive/2012/11/06/2757300.html 在调整布局的时候,某些控件的大小需要设置单位: px: 即像素 ...
- 51NOD 1639 绑鞋带 数学
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1639 假如一开始有一根绳子. 那么增加一根的时候,可以插在它的尾部,也可 ...