文档章节

java开发设计六大基本原则

有余力则学文
 有余力则学文
发布于 2018/03/12 14:38
字数 518
阅读 262
收藏 13

遵循单一职责原则

  1. 一个类只专注于做一件事; 
  2. 高内聚,低耦合;

开放-封闭原则

  1. 对拓展开放,对修改关闭(尽可能不动原有代码进行拓展); 
  2. 高内聚,低耦合; 
  3. 为达到目的,需对系统进行抽象化设计(关键); 

UML举例: 

这里写图片描述

里氏代换原则(LSP)

  1. 子类必须能够替换它们的基类型,基类与子类可互换,客户端没有察觉情况下; 
  2. 低耦合; 
  3. 很容易实现同一父类下的各个子类的互换,而客户端可以毫不察觉;

UML实例: 

这里写图片描述

士兵只能使用WeaponGun,而无法使用ToyGun杀敌,如果使用ToyGun将会出错。这就是里氏替换原则。

依赖倒置原则

  1. 这个是开闭原则的基础,具体内容:面向接口编程,依赖于抽象而不依赖于具体。
  2. 写代码时用到具体类时,不与具体类交互,而与具体类的上层接口交互。

接口隔离原则(Interface Segregation Principle)

  1. 使用多个专一功能的接口比使用一个总接口总要好,但不能过渡; 
  2. 一个接口不能过于臃肿; 
  3. 高内聚 
  4. 会使一个软件系统功能拓展时,修改的压力不会影响到别的对象那去; 

UML实例: 

这里写图片描述

Model只要满足好身材这个条件,就有可能成为模特,漂亮女孩满足好身材和好。AngelaBaby即有好身材又好。

迪米特法则(Law of Demeter)

  1. 又叫最少知识原则; 
  2. 对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系; 
  3. 低耦合; 
  4. 类知道其他类应尽量少; 
  5. 类可以访问其他类的方法或者属性也应尽量少;

这里写图片描述

如果Lily和Jack自己做hamburg那么就会与Vegetable、Meat、Bread产生千丝万缕关系。上图,则由KFC来做,这样Lily和Jack就只与Hamburg有关关联,与材料就没有关联了。

本文转载自:http://blog.csdn.net/albenxie/article/details/72371102

有余力则学文
粉丝 5
博文 92
码字总数 33569
作品 0
杭州
程序员
私信 提问
论Java程序猿的自我价值提升,BATJ资深架构体系助你飞跃瓶颈区!

Java那句广为人知的口号“一次编写,处处运行”也体现出Java价值的关键所在—强大的Java虚拟机使得Java具有跨平台兼容性。 目前流行的Java职业路径包括后端开发员、大数据开发员,嵌入式系统...

Java填坑之路
2018/10/30
0
0
阿里P8级架构师:推荐高薪架构学习路线

前言: 陈磊,之前在一线名企工作多年,级别P8, 是企业的核心技术开发人员,目前有十三年的开发经验。从事于Java后端开发,对分布式架构、spring微服务、MySQL、框架、Netty、JVM、性能优化、...

别打我会飞
2018/11/26
191
0
作为一名java程序员你的薪资为什么上不去?

不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 很多人在问我,...

java高级架构牛人
2018/05/07
95
1
阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优!

本PPT从JVM体系结构概述、GC算法、Hotspot内存管理、Hotspot垃圾回收器、调优和监控工具六大方面进行讲述。 好东西当然要分享,PPT已上传可供下载(加入群(Java填坑之路)789337293 即可免费...

Java爬坑之路
05/14
57
0
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery底层函数-jQuery.ajaxSetup()

jQuery.ajaxSetup( options )返回: 描述: 为以后要用到的Ajax请求设置默认的值 添加的版本: 1.1jQuery.ajaxSetup( options ) options 类型: PlainObject 一个用来配置Ajax请求的"{键:值}"对,......

前端老手
33分钟前
7
0
Qt编写自定义控件56-波浪曲线

一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当...

飞扬青云
39分钟前
6
0
深入理解计算机系统cp1:存储单位与编码

摘要: 理解计算机是如何存储数据的。 原文:深入理解计算机系统cp1:存储单位与编码 作者:Chor Fundebug经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ...

Fundebug
42分钟前
6
0
Python查询比特币实时价格

在本文中我们将学习如何使用使用coinmarketcap提供的比特币行情API,编写Python程序来获取像比特币、莱特币或以太币之类的区块链数字货币的实时行情/实时价格。 1、比特币行情API调用代码 我...

汇智网教程
今天
8
0
爬虫平台Crawlab核心原理--自动提取字段算法

⚠注意: 可配置爬虫现在仅在Python版本(v0.2.1-v0.2.4)可用,在最新版本Golang版本(v0.3.0)还暂时不可用,后续会加上,请关注近期更新 背景 实际的大型爬虫开发项目中,爬虫工程师会被要...

tikazyq
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部