设计模式
2016-09-18 17:20:56 57 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
设计模式
策略模式
基于接口而不是基于实体编程
将行为委托给接口处理
用户需要选择行为,应与简单工厂模式结合使用
demo:鸭子会飞和会叫
不同的算法做同样的事情
对象组合实现
订阅者模式
观察者模式定义了一系列对象之间的一对多关系
当一个对象改变状态是,其他依赖者都会收到通知
提供一种对象设计,让主题和观察者之间松耦合
demo:setOnclickListener
装饰者模式
装饰者和被装饰者必须是同一种类型
动态地将责任附加到对象上,想扩展功能,装饰者提供有别于继承的另一种选择
工厂模式
工厂方法
让类的实例化推迟到了子类
定义了一个创建对象的接口,由子类决定要实例化是哪一个
声明一个抽象工厂方法
让子类决定该创建对象是什么
简单工厂
通过继承类实现
覆盖工厂方法
将创建委托给子类处理
抽象工厂模式
平行的类层级关系
产品类和工厂类都是 抽象类
通过组合对象实现
设计原则
依赖倒置原则
依赖抽象,不要依赖具体类
避免违反原则
变量不可以持有具体类的引用
不要让类派生自具体类
不要覆盖基类中已实现的方法
已实现的方法应该所有子类共享
最少知识原则
只和你的密友谈话
不要让太多的类耦合在一起,免得修改系统的一部分,影响其他部分
好莱坞法则
设置钩子
钩子是一种方法,在抽象类中不做事情,或者只做初始化
别打电话给我们,我们会打电话给你
单一责任
一个类应该只有一个引起变化的原因
单例模式
确保一个类只有一个实例,并提供一个全局访问点
命令模式
将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象
不同的命令做不同的事情
含有接受者请求
demo:遥控器
复合模式
模式通常组合使用,并被组合在同一个设计解决方案中
适配器模式
client和被适配者解耦
将接口转换成另一个
demo:BaseAdapter
外观模式
提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统使用
提供简化的接口,没有封装接口
模板方法
定义算法步骤,并允许子类为一个或多个步骤提供实现
与策略模式区别
通过继承实现
与工厂方法区别
工厂方法是模板方法的一种特殊版本
迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示
组合对象
允许将对象组合成树形结构
一致处理个别对象和对象组合
状态模式
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
客户端对状态对象不了解
代理模式
为另一个对象提供一个替身或占位符以访问这个对象
静态代理
原本类和代理类继承同一个接口
代理类有持有原本类对象的一个引用
0 条评论
回复 删除
下一页