![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
chsmy2018
学无止境,任何技能都是慢慢积累出来的。
展开
-
java设计模式——单例模式
对于java或android开发来说,理解设计模式是非常有必要的。是语言开发升级的必经之路。今天先谈谈最简单的一个设计模式也是用的非常多的一个设计模式——单例 单例模式从名字中就能看出是保证整个应用中只有一个实例。 这样有什么好处呢,首先想到就是避免资源的浪费,也可以避免多实例多次调用产生的错误结果。 在一些工具类中,线程池中等地方都可以用到单例。 写原创 2016-02-19 11:06:29 · 334 阅读 · 0 评论 -
java设计模式——观察者模式
观察者模式也是我们平时编码时用的非常多的一种设计模式,有点回调的意味,我们平时用的UI控件的点击事件,现在很流行的响应式编程,还有现在很流行的Rxjava等非常好的开发框架中都有它的影子。 其实特别对于移动端开发来说,这种设计模式是非常非常重要的,因为当我们订阅了一个事件之后,我们就不用管它了,去做别的事情,它会自动完成我们订阅的事件,等它完成之后,在来通知我们,这样我们就不用一直等着一原创 2016-02-20 20:23:06 · 390 阅读 · 0 评论 -
java设计模式——工厂模式
工厂 顾名思义 制造东西的地方,而我们的工厂模式也是用来创建对象的。定义一个创建对象的接口,让子其类来决定创建那个对象。 package com.chs.myfactory; /** * 作者:chs on 2016/3/7 14:12 * 邮箱:657083984@qq.com * 抽象的工厂 */ public interface Factory { /**原创 2016-03-07 16:12:38 · 369 阅读 · 0 评论 -
Java设计模式——代理模式
java中的代理模式是一个很重要的模式很多地方都用到,比如Spring框架中。Android中也是比如adil中,比如现在非常流行的网络框架retrofit中等等很多地方都会用到。所以理解代理模式是非常重要的。今天就来谈一下代理模式。 代理顾名思义就是代表另一个事物完成一些工作。也可以理解为中介。举个例子:链家买房子。大家都知道链家是卖房子的中介,它可以卖很多楼盘的房子。比如水岸连城和香原创 2016-08-11 18:07:09 · 331 阅读 · 0 评论 -
java设计模式——Builder模式
Builder模式既构建者模式,可以一步一步地创建一个复杂的对象。很多的开源项目中也都用到了Builder模式,比如Rtrofit , Glide ,Picasso RxJava 等等,安卓系统中用到的也很多,最典型的就是我的的AertDialog。他们的很大的一个特点就是链式调用。使我们的代码写起来既简单又爽快。而链式调用的关键就是每个setter方法都返回自身。 下面通过AertDialog原创 2017-10-20 11:18:39 · 382 阅读 · 0 评论 -
Java设计模式——策略模式
策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使他们可以互相替换。 这种模式在各种插值器中用的很多,比如安卓的属性动画中的插值器,okhttp中的插值器 下面先来个小例子。假如我们需要根据不同的条件来实现不同的动画效果,最常用的就是if-else或者使用switch 如下面 public class AnimationUtil { void animate(int t...原创 2018-02-24 09:58:07 · 167 阅读 · 0 评论 -
Java设计模式——外观模式
外观模式:隐藏了系统的复杂性,为子系统中的一组接口提供了一个统一的访问接口。高内聚低耦合。 外观模式非常简单 例子:比如一个网络框架一般都有缓存策略,首先从内存中查找,找不到在去硬盘中查找,还找不到在去网络上下载。 下面开始先定义几个接口 public interface MemoryCache { Bitmap findFromMemory(String url); } public i...原创 2019-06-09 22:12:00 · 116 阅读 · 0 评论 -
Java设计模式——适配器模式
适配器模式是将一个类的接口转换成开发者希望的另一个接口 下面参考Retrofit的源码学习适配器模式,Retrofit现在的Andorid开发者基本都用到过,里面用到了很多设计模式比如动态代理模式,适配器模式等。下面来看其中的一个适配器 在使用Retrofit的时候我们经常会看到下面的写法来添加一个addCallAdapterFactory,如果我们不添加,会有自己的一个CallAdapter返回...原创 2019-06-09 22:14:41 · 131 阅读 · 0 评论 -
AOP面向切面编程--解放你的双手
假如现在有一个需求,在对数据库进行增删改查的时候,假如执行每个操作之前都要求把数据备份一下。这个时候怎么做比较好呢,难道要在每个方法之前都写一个save()方法吗,如果用到增删改查的地方非常多,这时候就非常麻烦了。 通过java中的动态代理就可以很方便的实现。比如 首先有个操作数据库的类 public interface DBOperation { int save(); int...原创 2019-07-07 19:51:50 · 147 阅读 · 0 评论