开发中三个经典的原则

单一职责:一个类,一个方法专注做一件事情。不要混合多个目标。

比如我的"绑定手机接口",目标的确是干一件事情:绑定

但是里面还是要判断:这个手机号是不是被占用,还要判断绑定历史,判断手机白名单

只不过把判断绑定历史,判断白名单,封装成单独的方法来调用。


把判断绑定历史,判断白名单,封装成单独的方法

这样就是单一职责。以后其他地方需要用到,就调用这个方法

开放-闭合:是 1998年提出来的。对扩展要开放,容易扩展就是开放。对修改不允许,这是闭合。电脑硬件中的各个组件,是可以自己组装,方便进行扩展(cpu和内存都是 自己可以换)。但是有些东西是不能让你修改的。比如内存,电源设备,这些内部封闭起来。不允许去修改内存里面,把电源拆开修改。这样以保证稳定性。

归纳为:对扩展功能是开放,对修改内部机制是屏蔽掉,不允许修改。

接口之间要进行隔离原则:比如有多个接口,不要混合成一个接口实现。能拆分成多个接口,隔离起来。这样做的好处,修改a接口,不会污染到b接口。从另外一个角度来看,一个接口完成了多件事情,与单一职责的思想是类似的。

以上纯根据自己理解写出来。上面原则其实太抽象,空洞。需要随着编码遇到的坑越来越多,把例子举出来,会更加加深对这些原则的理解。

posted on 2016-03-04 11:10 jason&li 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ldms/p/5241364.html

开发中三个经典的原则相关推荐

  1. 浅谈一对一视频交友系统软件开发中UI设计的基础原则

    UI即User Interface(用户界面)的简称,UI设计指对一对一视频交友系统软件的人机交互.操作逻辑.界面美观的整体设计.好的UI设计不仅是让软件变得有个性有品位,还要让软件的操作变得舒适简单 ...

  2. iOS开发UI篇—iOS开发中三种简单的动画设置

    [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要"参与到"动画中 [UIView beginAnimations: ...

  3. 分享 Android 开发中三个与屏幕有关的小众知识

    宽屏适配.禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场. 宽屏适配 越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例的三 ...

  4. Android开发中Handler的经典总结

    当应用程序启动时,Android首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进行事件分发. AD: 一.Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线 ...

  5. 在项目开发中应该遵循的准则

    根据我公司实际情况,大致列出在项目开发中应遵循的步骤原则.在各程序员遵循原则的情况下,方能开发出健壮有效的程序,且能提高自己的编程素质. 1.在项目开发初期应该有项目的详细原型.鉴于程序员文档能力有限 ...

  6. asp.net ajax怎样传值,JQuery在asp.net中三种ajax传值

    1)通过webservice,注意去掉注释[System.Web.Script.Services.ScriptService]这行前的注释 2)通过aspx.cs文件中的静态方法 3)通过aspx文件 ...

  7. 我在架构设计和代码开发中的一些常用原则

    简介: 在日常的开发和设计过程中,大家对技术设计上的一些问题往往会面临很多的选择,不同的人会有不同的选择.本文介绍的就是我在工作中遇到的一些问题而总结和使用到的一些常用原则. 不管我一生中取得了多大的 ...

  8. 二阶声波正演c语言程序_嵌入式开发中的三种程序构架

    关注.星标公众号,直达精彩内容 0.前言 在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题.软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构 ...

  9. 协议开发 中移动CMPP2.0协议API(三)

    协议开发 中移动CMPP2.0协议API(三) 云网(jimzj@21cn.com) 接上篇... 五.发送接口 对于API来说,最重要的一部分就是去做发送数据了.通过SOCKET套接字与网关相连接后 ...

最新文章

  1. ubuntu安装thrift
  2. 作为CTO,我为什么必须要求代码进行Code Review!
  3. 构建优质的推荐系统服务
  4. Python可以用于客户端Web开发吗?
  5. 七月算法机器学习4 凸优化初步
  6. JSONObject.fromObject 找不到这个方法或是报错
  7. android+recovery+启动流程,Recovery启动流程(一)- 应用层到开机进入recovery详解
  8. 我的世界服务器空岛删除怎么找回,我的世界-删除空岛指令 岛屿删除指令分享...
  9. Ubuntu下配置FreeRadius+L2TP+MySQL,实现限制用户流量和登录人数
  10. mvc2 mvc_MVC之外的世界
  11. Alibaba内部首发“M8级”500页微服务架构手册,GitHub上杀疯了
  12. mysql登录框万能密码_Sqli-LABS通关笔录-11[sql注入之万能密码以及登录框报错注入]...
  13. STM32F103(1)
  14. RFID MFRC522
  15. 基于Linux下的VIC使用(1)VIC部分(Fortran版本)
  16. nuc6i7kyk+linux+驱动,Intel 2016年最新版迷你PC!NUC Kit NUC6i7KYK 骷髅峡谷迷你PC!
  17. 计算机管理系统的发展方向论文,浅探计算机信息管理系统设计原理及发展趋势...
  18. 第一批组团去太空旅游的人,不是活人
  19. Cloud Token:一个趋势可以改变你的一生,有天你别后悔拍大腿……
  20. 联想电脑尺寸在哪里看_笔记本屏幕大小怎么看 查看笔记本屏幕型号尺寸方法...

热门文章

  1. linux cp 目录不存在自动创建,Linux运维知识之Linux:复制并创建目标目录,如果它不存在...
  2. c++hello world代码_在 Rust 代码中编写 Python 是种怎样的体验?
  3. 龙之谷哪个服务器最多,龙之谷哪些服务器数据互通 龙之谷数据互通详情介绍...
  4. c51倒计时程序汇编语言,51单片机汇编程序:倒计时交通灯
  5. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. 报错详细
  6. 江苏单招计算机网络试卷,江苏省2016年对口单招计算机专业综合理论试卷.doc
  7. 下拉框输入模糊查询_RazorSQL for Mac(数据库工具查询)
  8. html不继承父级背景色,javascript – 如何获取从父元素继承的计算背景颜色样式...
  9. item不可见 recycleview_RecyclerView不显示Item
  10. centos图形化桌面的文件在哪_Windows 远程连接 CentOS 7 图形化桌面