这几天晚上回来都去玩了!没有坚持学习。真的好惭愧! 非常自责 后面一定要坚持 一气呵成  争取每天学一点,把这个学完。

  今天主要是看了一下  设计模式中的 原则三: 依赖倒置原则(DIP)

  官方是这样定义的:所谓依赖倒置原则指的是是要依据抽象编程,不要依赖与具体。要求客户端依据抽象进行耦合。

  意思也就是说抽象不应当依赖于具体,具体应该依赖抽象。要针对接口编程,不要针对具体编程。

  额,看到了 官方的定义,在来谈谈自己的认识吧。说得挺简单的哈,抽象、抽象、再抽象。做起来可就不是那么容易了。

  我的理解是这样的,所谓依赖倒置原则 就是把现实的业务逻辑进行抽象化,现实一点具体一点的意思就是说,拿到一个东西先别慌着去实现,而是分析一下可以分为几个步骤。找出主线环节,并针对每个环节 定义接口 或者定义抽象类,然后再继承接口或者抽象类进行实现。那么如果有业务扩充也只是多派生一个实现类而已,不会影响到整个系统的结构,这一点也就是之前所说的“开闭原则” 针对系统结构保持稳定,针对新的业务进行扩展。 那么就可以保证上层调用的稳定性了。

  举个例子:假如现在要实现一个打印查询结果的功能。如果按照以前的思维就是  直接拿着查询条件去查询数据,然后拿着数据去执行打印导出。

  那么如果要 用面向对象的思维去做的话  我的想法是 可以分为这几个部分一、组合查询条件 二、根据查询条件进行读取数据 三、根据数据进行导出。

  这样分的主要考虑是  查询条件可能以后会增加、读取的数据纬度会发生变化(比如添加读取字段)、导出的模板格式或者导出的文件格式会发生变化。

  那么会有一个抽象类   里面定义 三个抽象方法(获取查询条件、依据查询条件读取数据、依据数据进行导出) 然后可以将这三个方法基于接口进行实现, 在调用的时候只用 继承抽象类根据业务要求调用对应的实现接口去实现对应的打印导出。

  额 想的也就这么多了。 也可能因为急于求成导致调入设计陷阱。 有老鸟看到还望指点一二!

《设计模式》-原则三:依赖倒置原则(DIP)的更多相关文章

  1. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle7.1 依赖倒置原则DIP The Dependency Inversion Pr ...

  2. 设计模式学习--面向对象的5条设计原则之依赖倒置原则--DIP

    一.DIP简介(DIP--Dependency Inversion Principle): 1.高层模块不应该依赖于低层模块,二者都应该依赖于抽象.2.抽象不应该依赖于细节,细节应该依赖于抽象.   ...

  3. IOS设计模式的六大设计原则之依赖倒置原则(DIP,Dependence Inversion Principle)

    定义 高层模块不应该依赖于低层模块,二者都应该依赖于抽象:抽象不应该依赖细节:细节应该依赖抽象. 定义解读 依赖倒置原则在程序编码中经常运用,其核心思想就是面向接口编程,高层模块不应该依赖低层模块(原 ...

  4. 深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP

    前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第5篇,依赖倒置原则LSP(The Dependency Inversion Principle ). 英文原文:htt ...

  5. Java设计模式(2:单一职责原则和依赖倒置原则详解)

    一.单一职责原则 不要存在多于一个导致类变更的原因.简单来说,就是一个Class/Interface/Method只负责一项职责. 这句话最为重要的就是这一段:一个Class/Interface/Me ...

  6. 最简单直接地理解Java软件设计原则之依赖倒置原则

    理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针 ...

  7. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...

  8. 设计模式六大原则(三):依赖倒置原则(Dependence Inversion Principle)

    依赖倒置原则(DIP)定义: 高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码 ...

  9. zt 设计模式六大原则(3):依赖倒置原则

    下面说法对不对? 父类将算法(逻辑)封装起来,子类实现细节:这个就叫DIP(依赖倒置:Dependency Inversion Principles),模板模式就是这个原则的实现.如果在父类中加一个t ...

  10. 【面向对象设计原则】之依赖倒置原则(DIP)

    依赖倒转原则(Dependency Inversion  Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象.换言之,要针对抽象(接口)编程,而不是针对实现细节编程. 开闭原则( ...

随机推荐

  1. Swift-懒加载使用

    //    懒加载 lazy var tableView : UITableView = {         let tempTableView = UITableView()         ret ...

  2. selenium使用execl实现数据驱动测试

    import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.uti ...

  3. vsftpd的配置文件说明

    vsftpd的配置文件说明: vsftpd.ftpusers:位于/etc目录下.它指定了哪些用户账户不能访问FTP服务器,例如root等. vsftpd.user_list:位于/etc目录下.该文 ...

  4. Java多线程(六) —— 线程并发库之并发容器

    参考文献: http://www.blogjava.net/xylz/archive/2010/07/19/326527.html 一.ConcurrentMap API 从这一节开始正式进入并发容器 ...

  5. URL query string中文字符问题

    如果URL的query string中包含中文字符,在不做特殊处理的情况下通过 request.getParameter 方法是获取不到正确的信息的,这是由于下面的两个机制造成的 浏览器会自动对URL ...

  6. linux下安装jenkins

    我们不用离线安装方式 第一步.必须验证java环境 第二步.我们这里使用yum命令进行在线安装,使用service命令进行启动 1.wget -O /etc/yum.repos.d/jenkins.r ...

  7. DAY7-Python学习笔记

    前记: 这几天在弄小程序,view页面的开发很简单,但是在加载图片上遇到了问题,小程序的大小不能超过2M,所以大部分的图片内容要通过request请求服务器来获取,这里之前学习小程序的时候是通过网站A ...

  8. ORA-01034和ORA-27101的解决方法

    问题所在: 1.要登录的数据库实例内容配置内容错误,联系负责该机子的管理员看原因

  9. BZOJ1113 [Poi2008]海报PLA 【分治 + 线段树】

    题目链接 BZOJ1113 题解 显然只与高有关,每次选择所有海报中最低的覆盖所有海报,然后分治两边 每个位置会被调用一次,复杂度\(O(nlogn)\) \(upd:\)智障了,,是一道\(O(n) ...

  10. 前端学习 -- 内联框架iframe

    内联框架iframe 可以向一个页面中引入其他的外部页面 内联框架中的内容不会被搜索引擎所检索,所以开发中尽量不要使用内联框架 <iframe></iframe> 属性: sr ...