工作四年有余,编写的代码都是业务代码。不涉及低层。

目前离职在家,过年完了,准备找工作了。

决定温故而知新,复习也是学习。

本着随遇而安的原则,随便从之前设计的众多条目中选择了一条开始复习。

设计模式

我本身并不是计算机科学系的专业,一焊电路板专业的,唯一与代码相关的是在大学学过公共的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 设计模式 & 开头的更多相关文章

  1. 2020 重新出发,JAVA 学习计划

    ------ @[toc]# 前言 我呢已经工作七年了,一直没有换工作,因为我这个人没什么太大的野心,安安稳稳的生活就挺好,目前的公司虽然福利一般,但是工作稳定,环境也都很熟悉了. 但是今年,到目前为 ...

  2. MVC缓存

    MVC入门系列教程-视频版本,已入驻51CTO学院,文本+视频学效果更好哦.视频链接地址如下: 点我查看视频.另外,针对该系列教程博主提供有偿技术支持,群号:226090960,群内会针对该教程的问题 ...

  3. Hammer.js

    一.前言 移动端框架当前还处在初级阶段,但相对于移动端的应用来说已经有很长时间了.虽然暂时还没有PC端开发的需求量大,但移动端的Web必然是一种趋势,在接触移动端脚本的过程中,最开始想到的是juqer ...

  4. jquery触屏幻灯片

    一.前言 去年接触了移动Web开发,做了些手机端的网站及应用,还有些小的微信游戏和活动页面.每个项目里或多或少的都会有一些触屏事件等.其中有两个用到了jquery触屏幻灯片.刚开始的时候也在百度上搜索 ...

  5. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  6. 无废话SharePoint入门教程四[创建SharePoint母版页]

    一.前言 文章成体系,如果有不明白的地方请查看前面的文章. 二.目录 1.创建HTML页面 2.将HTML文件转换为SharePoint母版页 3.在 SPD中修改母版页“PlaceHolderMai ...

  7. 无废话SharePoint入门教程一[SharePoint概述]

    一.前言 听说SharePoint也有一段时间了,可一直处在门外.最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发.但苦于网上SharePoint入门的东西实在太少,导致 ...

  8. IHttpHandler的那些事

    写在前面 从上家公司离职,在家休息,闲着无聊,觉得还是有必要将IHttpHanlder的内容,做一个总结.发现在写demo的过程中,总觉得有点生疏了,项目中很少使用自定义的类来实现该接口.当然,一般处 ...

  9. C++中一个类(非继承类)对象,所占内存空间大小

    离职后在家里带了半年多了,这半年多里没有编写过一行代码,倒是看过一些书,但是差不多也都是囫圃吞枣.房子也快要装修,也得赶快找一个工作了,不然养车,还要玩摄影,没收入的日子真是不好过啊.呵呵. 按惯例, ...

随机推荐

  1. astah* professional 6.9.0

    下载地址:http://members.change-vision.com/files/astah_professional/6_9_0 破解方法:按照Astah Professional 6.9后打 ...

  2. 建立一个属于自己的AVR的RTOS

    建立一个属于自己的AVR的RTOS(序) 建立一个属于自己的AVR的RTOS(第一篇:函数的运行) 建立一个属于自己的AVR的RTOS(第二篇:人工堆栈) 建立一个属于自己的AVR的RTOS(第三篇: ...

  3. 我收藏的Blog

    收集我开发过程中遇见的优秀Blog iOS圈 王巍-强烈推荐 唐巧-强烈推荐 YYKit作者-强烈推荐 Imrazor's Blog Ryan's Zone http://www.cnblogs.co ...

  4. MariaDB GTID 复制同步

    MariaDB GTID 复制同步 GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事物ID是不能相同的.全局事务ID是Mster服务器生成一个128位 ...

  5. [Unity]Unity开发NGUI代码实现ScrollView(放大视图)

    Unity开发NGUI代码实现ScrollView(放大视图) 下载NGUI包 导入NGUI3.9.1版本package 创建MainCameraScript.cs脚本 MainCameraScrip ...

  6. AdaBoost的java实现

    目前学了几个ML的分类的经典算法,但是一直想着是否有一种能将这些算法集成起来的,今天看到了AdaBoost,也算是半个集成,感觉这个思路挺好,很像人的训练过程,并且对决策树是一个很好的补充,因为决策树 ...

  7. Jsoup使用教程

    一.解析和遍历一个HTML文档1.解析Html及Url链接 String html = "<html><head><title>First parse&l ...

  8. realm-java 源码疑问

    JNIEXPORT void JNICALL Java_io_realm_internal_Group_nativeWriteToFile( JNIEnv* env, jobject, jlong n ...

  9. iOS9网络适配

    今天升级Xcode7.0,发现网络访问失败. 输出错误信息:The resource could not be loaded because the App Transport Security po ...

  10. cpptoolstip界面提示库使用

    很多时候写一些界面程序,需要实时的给用户提示,每次都弹出一个messagebox挺烦的,状态栏又怕人看不到,最后找了一个相关的类,显示效果不错,分享一下,效果如下 下载库下来之后对应八个文件 将八个文 ...