自己也写了很多代码了, 最近在对一个以前写的Android项目进行重构, 在重构的过程中发现, 无论怎样调整各种类之间的关系, 在某些方面有所改进的同时, 在另外一些方面产生了严重的问题, 总是不能取得一个合适的平衡点. 而且有一些方案起初感觉良好, 可随着代码的重构, 才发现这些方案存在严重缺陷, 完全不可行.
在这样的重构过程中, 我花费了很多时间, 但没有取得什么良好的效果, 甚至还凭空增加了代码的复杂度. 实际上, 这些问题的本质都是设计模式的问题, 通过学习设计模式, 我们可以学习到程序设计的一些客观规律, 从而使程序更易于维护和修改.
本文将记录设计模式的有关知识. 依据设计模式来进行设计和开发, 能够使程序更加灵活, 更好的适应客户复杂而多变的需求.
目录
设计模式的基本原则
面向对象设计原则
以下的一些原则是在面向对象设计的过程中, 应该遵守的基本原则虽然这些规则都不是强制的要求, 但是遵守这些规律可以减少我们对项目维护的难度. 设计模式的种类非常多, 所以我们更多的应该思考各种模式的本质, 从而做的自发的使用需要的模式.
原则 | 含义 |
---|---|
单一职责 | 系统中的每一个类都应该只做一件事情 |
开闭原则 | 一个对象对扩展开放, 对修改关闭(通过增加代码完成新功能) |
依赖倒转 | 抽象不应该依赖于细节, 细节应该依赖于抽象 |
里氏替换 | 任何出现抽象类的地方都可以使用它的子类替代 |
合成复用 | 优先使用组合而不是继承 |
迪米特原则 | 一个对象对另外一个对象的了解要尽可能少 |
单一原则使得一个类只有一个改变原因, 从而不会扩大修改对系统的影响.
单例模式
使用场景
如果某个类只需要一个全局的唯一实例, 则使用单例模式. 典型的场景是数据库的连接, 日志的输出文件, 这些类在整个程序中, 都只需要唯一的实例.
实现代码
1 | public class Singleton{ |
要点分析
- 通过是否为空判断, 使得第一次调用此函数的时候, 需要花费时间初始化, 其他时候调用都直接返回实例
- 保证了始终使用同一个实例, 从而一定程度保证了数据的一致性
- 保证了全局只有一个实例, 一定程度的节省了系统开销
最后更新: 2024年04月24日 15:50
版权声明:本文为原创文章,转载请注明出处
原始链接: https://lizec.top/2017/11/05/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/