设计原则之单一职责原则
来源:互联网 发布:淘宝买家秀模板 编辑:程序博客网 时间:2024/04/30 01:31
前言:暑假匆匆过了一边Java的设计模式,现在来系统总结一下。毕竟写Java程序不懂设计模式根本就是瞎扯,并且懂了设计模式学一些框架也更加快嘛,要知道里面可是设计模式满天飞。今天就来聊聊最简单的单一职责原则吧
1、单一职责原则是什么
这个根据字面意思就可以知道,就是一个类尽量不要有很多方法,尽量降低类的复杂程度。
2、单一职责的应用
其实我们经常说的MVC就是单一职责最好的应用。如果我们不采用单一职责原则,我们在进行用户注册登录的时候只有一个User类,里面的代码会大致如下
public class User{ private String username; private String password; // 连接数据库 public Connection getConnection(){ ... } // 注册是具体实现 public Boolean Registe(){ ... } // 登录的具体实现 public Boolean Login(){ ... } // 查询是否存在某个用户 public Boolean findById(){ ... } //关闭数据库 public void close(){ ... } public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password= password; }}
当我们需要添加其他功能的时候,会导致这个User类非常的大,我们后面的维护和可读性都会很困难。如果我们通过MVC的方式来实现,大概会是下面这样
连接数据库的类
public class DatabaseConnection{ //连接数据库 public Connection getConnection() { ... } //关闭数据库 public void close() { ... }}
用户的类
public class User{ private String username; private String password; public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password= password; }}
操作数据库的类
public class DAOUser{ public Boolean Login() { ... } public Boolean Registe() { ... } public Boolean findById() { ... }}
3、单一职责的优势
1、降低类的复杂性
2、提高类的可读性
3、提高代码的可维护性和复用性
4、降低应变更引起的风险
4、总结
单一职责设计原则看起来很简单,但其实用起来是很难的,很多时候我们不太清除具体某个方法应该放在哪个类中,因此还是需要我们在项目中去成长,在实践中去总结。
(完) 2017/11/17 23:56
阅读全文
0 0
- 设计原则之单一职责原则
- 六大设计原则之“单一职责原则”
- 六大设计原则之单一职责原则
- 设计原则之单一职责原则 javascript
- 设计原则之单一职责原则
- 设计原则之单一职责原则
- 设计原则-单一职责原则
- 《大话设计模式之单一职责原则》
- 设计模式之单一职责原则
- 设计模式之单一职责原则
- 设计模式之单一职责原则学习
- 大话设计模式之单一职责原则
- 面向对象设计之单一职责原则
- 《设计模式》杂记之单一职责原则
- 设计模式之单一职责原则
- 设计模式学习之单一职责原则
- android设计模式之单一职责原则
- 设计模式之禅单一职责原则
- 泛型
- USACO 2009 Mar Silver 3.Look Up
- 什么是SOAP
- C语言实验——分数序列
- 写技术类书小技巧
- 设计原则之单一职责原则
- css3设置阴影
- HDU
- 适应度函数及遗传操作
- SSH简介
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Convolution model:step by step and application (4.1)
- PAT:B1026. 程序运行时间(15)
- cut、sotr、uniq、wc、tee、split、tr
- 10.7线性表逆置的算法