代码重构学习笔记
一、设计模式作用
OOD(Object Oriented Design,面向对象设计)的目标:
设计出强内聚、低耦合的程序
OOD原则:
SRP(Single Reponsibility Principle)
OCP(Open/Closed Principle,开闭原则)
LSP(Liskov Substitution Principle)
ISP(Interface Segregation Principle)
DIP(Dependency Inversion Principle)
设计模式
创建模式
结构模式
行为模式
设计模式定义:
每一种模式都描述了一种问题的通用解决方案,这种问题在我们的环境中会不断出现
设计模式是一种可重复使用的解决方案
设计模式的四个部分
模式的名称:用于表达我们的设计的名称
待解决的问题:描述了何时需要运用这种模式,以及运用模式的环境(上下文)
解决方案:描述了组成设计的元素(类和对象)、它们的关系、职责以及合作。但这种解决方案是抽象的,不代表具体实现
结论:运用这种方案所带来的利和弊。主要指对系统的弹性、扩展性和可移植性的影响
设计模式分类
从功能分:
创建模式(Creational Patterns):对类的实例化过程的抽象
结构模式(Structural Patterns):将类或者对象结合在一起形成更大的结构
行为模式(Behavioral Patterns):对在不同的对象之间划分责任和算法的抽象化
从方式分:
类模式:以继承的方式实现的模式,静态的
对象模式:以组合的方式实现模式,动态的
简单工厂模式
使用中,通过接口定义对象,借助工厂类返回对象
基于接口的工厂模式,对该接口实现类的修改,不会影响调用方代码
工厂中接口实现类如果直接使用new方式创建,则工厂就不符合OCP原则;如果使用配置参数方式,通过反射获取对象,可以通过配置修改接口实现类,但是不能借助编译器识别类型安全问题
单例模式:一个类只能有一个实例
性能需求:因为只能有一个实例,可以减少实例频繁创建和销毁带来的资源消耗
功能需求:当多个用户使用这个实例的时候,便于进行统一控制
说明:
一定要有私有构造函数,保证类实例只能通过getInstance()方法获得
懒汉式获取单例对象一定要使用锁+double check方式,避免出现多重实例
注意单例中的成员变量是多线程重用的,所以注意线程安全问题,尽量将单例设计成无状态的
适配器模式:把已经存在的实现类的方法适配成我们需要的接口的方法
版权声明: 本文为 InfoQ 作者【胡家鹏】的原创文章。
原文链接:【http://xie.infoq.cn/article/da8c1f2a32dd8402cb8616385】。未经作者许可,禁止转载。
评论