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