0%

设计模式

设计模式分类

分类 概括
创建型模式 工厂模式
单例模式
建造者模式
原型模式
结构型模式 适配器模式
桥接模式
过滤器模式
组合模式
装饰器模式
外观模式
享元模式
代理模式
行为型模式 责任链模式
命令模式
解释器模式
迭代器模式
中介模式
备忘录模式
观察者模式
状态模式
空对象模式
策略模式
模板模式
访问者模式
J2EE模式 MVC模式
业务代表模式
组合实体模式
数据访问对象模式
前端控制器模式
拦截过滤器模式
服务定位器模式
传输对象模式

创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

工厂模式

应用场景:发送网络请求时,通过不同字段获取不同的请求类型(GET POST PUT DELETE …)

单例模式

应用场景:一个App进程只有一个Application

建造者模式

应用场景:Retrofit通过建造者模式实现不同的回调方式,JSON解析方式等

原型模式

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  1. 优点:性能高,逃避构造函数的约束
  2. 应用场景:JAVA中的Object clone()方法

结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

适配器模式

应用场景:ListView,RecyclerView的Adapter使用,将数据与View的不同ItemType结合起来

桥接模式

将抽象部分与实现部分分离,使它们都可以独立的变化。

应用场景:需要将10种矩形与圆形与10种角色进行任意搭配绘制到画布上。星巴客卖咖啡:中杯、大杯、加大坏,可加入口味:牛奶、糖等

过滤器模式

应用场景:List的filter功能使用

组合模式

将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

应用场景:手机文件夹树状结构

装饰器模式

应用场景:ContextWrapper的封装,包装一个人:装上白皮肤是白种人,装上黑皮肤是黑种人,装上黄皮肤是黄种人。对象只是一个人

外观模式

隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。

应用场景:第三库的封装使用,提供给调用者尽量简单的访问接口

享元模式

减少创建对象的数量,以减少内存占用和提高性能。

应用场景:字符串池,Integer -128~127的装箱

代理模式

应用场景:Retrofit接口的请求,暴露给外面的是一个接口,使用动态代理去实现okhttp请求

行为型模式

这些设计模式特别关注对象之间的通信。

责任链模式

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

应用场景:App View的事件分发机制

迭代器模式

这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

应用场景:JAVA数组集合的访问

中介者模式

这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

应用场景:聊天室,统一发给中间平台,再由平台发送给指定用户。而不是用户与用户直接交流形成复杂交错的交互网

备忘录模式

保存一个对象的某个状态,以便在适当的时候恢复对象。

应用场景:Activity的onSaveInstanceState

观察者模式

一对多的通信

应用场景:RxJava

策略模式

一个类的行为或其算法可以在运行时更改。

应用场景:一个系统需要动态地在几种算法中选择一种。ContextWrapper的应用