![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
qq_33487412
这个作者很懒,什么都没留下…
展开
-
设计模式中的车轮战-责任链模式
责任链模式在Android中的应用莫过于事件分发了,ViewGroup对事件分别给子View,从ViewTree的顶部至上而下地进行处理,直到事件被消化为止,这种方法在Android广播中也能看到责任链模式的实现分为以下几个部分请求者public class Request { private Object object; private int Request原创 2018-01-11 10:54:23 · 167 阅读 · 0 评论 -
从不同角度看同一数据结构-访问者模式
访问者模式是一种复杂的设计模式,使用频率不高,下面举一个公司对员工业绩考核的例子,CEO和CTO对员工的考核标准是不一样的员工抽象类public abstract class Staff { public String name; public int kpi; public Staff(String name) { this.name = n原创 2018-01-18 17:29:28 · 204 阅读 · 0 评论 -
让函数有执行顺序-模板方法模式
我们知道在一般情况下,Android中Activity的生命周期如图所示执行顺序为onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy(),这个就是模板方法模式的使用之一我们可以来模拟以下Activity所使用的模板方法模式,具体步骤如下:抽象类:定义算法框架,也就是执行顺序public abs原创 2018-01-17 18:23:06 · 352 阅读 · 0 评论 -
策略模式:再见if-else
在软件开发中,我们时常用到if-else来对进行条件判断,然后再进行相应的操作,但这样做会使得项目再日后的维护中出现困难,所以,当遇到比较复杂的if-else结构的时候,使用策略模式是很好的选择举一个简单的计算小例子,如对两个数进行加减乘除第一步,定义计算接口public interface CalculateStrategy { int calculateComeo原创 2018-01-07 12:15:25 · 1011 阅读 · 0 评论 -
容器中的游标-迭代器模式
迭代器模式又称为游标模式,Java中的List遍历就可以使用迭代器,而不需要使用“明显”的遍历算法,下面举一个迭代器模式的小例子迭代器接口public interface Iterator { boolean hasNext(); T next();}具体迭代器类public class ConcreteIteratorT> implements I原创 2018-01-16 12:37:51 · 264 阅读 · 0 评论 -
创建同一”类别“下的对象-抽象工厂模式
抽象工厂模式看起来与工厂方法模式相似,但工厂方法模式构建的是继承同一抽象类的对象,而抽象工厂模式创建出的对象并不是继承于同一基类的,所以,我们无法使用工厂方法模式那样的反射来创建对象抽象工厂模式的类主要分为四类,分别是:抽象工厂类、具体工厂类、抽象产品类、具体产品类。 与工厂方法模式不同的地方是工厂方法模式的抽象产品类和具体工厂类只有一个,而抽象工厂模式的抽象产品类可能有许多个,原创 2018-01-06 13:15:27 · 202 阅读 · 0 评论 -
设计模式中的撤销-备忘录模式
在开发过程中,我们可能会遇到保存对象目前的状态,到必要的时候再进行恢复的需求,这类似于数据库中的后援副本,到出现故障时数据库可以回到转储时的状态备忘录模式的示例在一般软件的开发中,备忘录模式是使用得比较少的设计模式,但是在游戏开发过程中,备忘录模式是使用得很频繁的,这里就举一个小游戏的例子游戏类public class Mario { private int原创 2018-01-15 12:28:47 · 306 阅读 · 0 评论 -
复杂对象的创建-工厂方法模式
在Android开发中,最常见的工厂模式应该就是Bitmap的创建了,因为Bitmap的创建是分很多种方式的,我们可以使用本地文件来创建Bitmap对象,也可以使用网络上的资源来创建Bitmap对象,具体方法如下:BitmapFactory.decodeResource(this.getResources(),R.drawable.haha); //使用本地文件HttpURLConnect原创 2018-01-05 12:06:28 · 328 阅读 · 0 评论 -
Java中内置的设计模式-观察者模式
观察者模式是jdk中内置的模式,也是使用频率最为广泛的设计模式之一,著名的开源项目如RxJava、EventBus中都能够看到它的影子,甚至在跨进程通信中,我们也经常用到观察者模式这里只举例一个使用jdk中内置观察者模式的例子:公众号发推送的例子,公众号发文章后,每个订阅该公众号的用户都会得到推送观察者public class User implements Observer {原创 2018-01-14 15:03:35 · 224 阅读 · 0 评论 -
命令模式
命令模式对简单的调用关系进行解耦,再大多数情况下我们可以使用直接调用的方式来做,但是如果调用比较繁琐,那么使用命令模式不失为一个好选择这里举一个超级马里奥移动的例子来讲解命令模式超级马里奥的动作类public class Mario { public void toLeft() { System.out.println("向左移"); }原创 2018-01-13 16:55:38 · 166 阅读 · 0 评论 -
原型模式与保护性拷贝
原型模式可以理解为直接从已存在的对象中拷贝出一个新对象,在重新创建一个对象消耗较大,但又需要用到两个相互不影响的对象的时候才用到,这是它与单例模式的区别所在原型模式中拷贝的方法有浅拷贝和深拷贝两种,浅拷贝因为直接引用对象,所以在修改拷贝出的对象的时候可能会影响到原对象,下面用购物商城的用户举个简单的例子public class User{ public User(){ }原创 2018-01-04 10:21:48 · 255 阅读 · 0 评论 -
解释器模式
解释器模式时一种使用的比较少的行为类设计模式,也比较难以理解,但是在系统设计的时候,解释器模式则被广泛地使用了,比如说在解析文件的时候这里举一个解释器模式的简单例子抽象算数运算解释器public abstract class ArithmeticExpression { public abstract int interpret();}数字解释器publ原创 2018-01-12 11:43:46 · 131 阅读 · 0 评论 -
单例模式的使用
单例模式适用于重新构造消耗大,又时常需要用到的类,一般又懒汉模式、饿汉模式、DCL模式和静态内部类模式这几种懒汉模式public class Example { private static Example example; private Example(){ } public static synchronized Example getInstance() {原创 2018-01-03 14:25:22 · 121 阅读 · 0 评论 -
对象内部的策略改变-状态模式
状态模式比较常见的是运用在登陆或未登陆的情况下进行,因为在用户登陆与未登陆这两种情况下,对相同的动作会有不同的反应状态模式的使用一般分为以下几步定义状态接口以及相应的动作public interface State { void statement(); void report();}定义每种不同的状态相应的动画登陆状态时的动作publi原创 2018-01-10 20:33:39 · 188 阅读 · 0 评论