设计模式
文章平均质量分 89
设计模式
爱炒饭
每天进步一点点
展开
-
命令模式以及在android中的使用
一、原理 命令模式将任务请求封装成命令对象,命令对象中封装有任务处理者对象,调用者持有这个命令对象,这就使得调用者和处理者没有直接联系,降低了耦合度。同时,根据不同的请求可以参数化命令对象,可以将多个对象放入到集合中排队执行。命令模式的UML图如下,安利一个UML绘制网站https://app.diagrams.net/。 命令模式可以适用组合的方式将发出请求的对象和执行请求的对象解耦,这样后面拓展新的命令比较容易;缺点就是会出现过多的具体命令类以及处理者类。 二、实践 那上课为例吧,现在有个一个调用者-原创 2021-08-24 20:37:48 · 423 阅读 · 0 评论 -
单例模式以及在android中的使用
一、原理 程序中某个对象可能比较消耗内存或者创建多个对象实例会引起运行错乱,此时就要求程序中只有一个该对象的实例,也就是单例模式的由来。为了防止开发者创建多个实例,一般会将单例类的构造器设为私有(private),这样你在其它地方去new单例类会失败;然后创建一个该单例类的静态方法去初始化实例对象并返回实例对象,当然实例对象也要是private static的,这样就必须通过静态方法获取该类的实例对象了。考虑到创建对象的过程并不是原子的,也要兼顾多线程安全问题。 二、分类 有多种构建单例的方式,它们都有优缺原创 2021-08-14 16:27:54 · 1160 阅读 · 0 评论 -
模板方法模式以及在android中的应用
一、原理 模板方法模式封装了一个算法(方法)流程的基本步骤,有些步骤的实现已经在父类中实现好,而另外一些步骤则可以推迟到子类中等待子类去具体实现,子类就可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 这样做有什么好处呢?首先,体现了面向对象的封装性,一些算法的基本步骤不允许修改,防止子类随意的修改算法流程;其次,对于一些公共代码可以直接将实现封装在父类,这样就起到了代码复用的目的;同时,也可以在父类的封装算法中添加一些钩子,让子类可以适当的改变算法的部分可变流程,增加算法的拓展性。 模板方法模式和原创 2021-08-09 19:59:54 · 214 阅读 · 0 评论 -
责任链模式
一、原理 当有两个或两个以上对象有机会处理某个请求时,可以将这些对象添加到一个对象链表,然后对链表中的对象依次遍历,如果某个对象可以处理请求则遍历结束,该请求被这个对象处理消耗掉;否则,如果该对象无法处理请求,就请求链表中的下一个对象,以此类推,这就是责任链模式。 责任链模式可以将请求发送者和处理者解耦,请求发送者只和链表头发生联系,这样也便于链表的排序和增删,当然因为循环调用代码调试以及排错可能也麻烦些。 android中用到很多责任链模式的地方,比如view事件分发、有序广播、以及okhttp中的拦截器原创 2021-07-24 20:41:38 · 143 阅读 · 2 评论 -
简单工厂模式、工厂方法模式和抽象工厂模式
一、简单工厂模式 将创建对象和操作对象分离开来,实现解耦。简单工厂模式通过一个参数变量来决定实例化哪一个类,主要包括抽象产品类(提供公共方法),具体产品类(覆盖抽象产品类的公共方法)和产品工厂(根据参数实例化具体产品)三个部分。 二、工厂方法模式 如果需要新增一个产品,那么简单工厂模式就需要修改产品工厂类,这样就导致了对修改也开放了,违背了“开放-封闭”原则。工厂方法模式通过增加抽象工厂...原创 2019-08-31 15:47:17 · 227 阅读 · 0 评论