1,什么是设计模式?
是对软件设计中普遍存在的各种问题,所提出的解决方案。目前比较让人熟知的是有23种设计模式。
2,设计模式6大原则
- 开闭原则
- 单一职责原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特原则
开闭原则:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭
单一职责原则:一个类负责一项职能,不要存在多个导致类变更的原因
里氏替换原则:所有引用基类的地方都必须能透明地使用其子类对象,子类可以扩展父类的功能,但不能改变原来父类的功能,充分利用继承
依赖导致原则:高层模块不应该依赖底层模块,两个都应该依赖抽象,抽象应该依赖细节,细节应该依赖抽象,简单来说,就是要面向接口编程
接口隔离原则:客户端不应该依赖它不需要的接口,一个类对另外一个类的依赖应该建立在最小的接口上,接口设计要合理,不要太臃肿,要适度
迪米特原则:一个对象应该对其他对象保持最少的了解,降低类的耦合度
简单介绍下常用的设计模式
- 简单工厂模式。用一个单独的类来封装创造实例的过程,哪里有变化就封装哪里。
- 工厂模式。定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
- 抽象工厂模式。提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。
- 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
- 建造者模式:也称Build模式,将一个复杂对象的构建与它的表示分开,使得同样的构建过程可以创建不同的表示。
- 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
Android中应用场景
- 单例模式:Android Studio中单例类模板,是通过内部静态类构造,或者我们平时写Application获取上下文的时候,全局配置这么一个实例类。
- 代理模式:远程代理(AIDL),IPC跨进程通信,APP1与APP2进行通信,通过AIDL协议,然后生成相应的代码。
- 简单工厂模式:Activity源码中,oncreate()方法内部实现情况
- 观察者模式:第三方库EventBus内部实现原理。
- 命令模式:事件中的onclickListener()点击操作。