设计模式
蒲公英291
这个作者很懒,什么都没留下…
展开
-
设计模式之桥接模式——链接两地的交通枢纽
1、介绍 桥接模式也称为桥梁模式,是结构型设计模式之一,在显示生活中大家都知道桥梁是链接河道两岸的主要交通枢纽,简而言之其作用就是链接河的两边,而我们的桥接模式与显示中的情况很相似,也是承担着链接两边的作用,在代码中,两边指的又是什么呢? 2、定义 将抽象部分与实现部分分离,使它们都可以独立的进行变化。 3、使用场景 从定义中桥梁主要作用是链接抽象部分与实现部分,但是事实上,任何原创 2016-07-25 11:00:37 · 757 阅读 · 0 评论 -
设计模式之单例模式——应用最广泛的设计模式
单例模式是应用最广的设计模式之一,在应用这个模式的时候,单例对象的类必须保存只有一个实例存在,如果有一个类中包括了很多功能,会消耗很多资源,那么这个类应该采用单例模式,没有理由让它构造多个实例。比如一个类既要访问IO,又要访问数据库等资源,就可以考虑使用单例模式,这种不能自由构造对象的情况,就是单例模式的使用场景。 单例模式的框图大致如下: 其中Client为客户端,Singleton原创 2016-07-18 10:06:42 · 540 阅读 · 0 评论 -
适配器模式——得心应手的“粘合剂”
适配器模式在日常开发中使用率极高,从代码中随处可见的Adapter就可以看出来。在Android中,ListView,GridView到现在最新的RecyclerView都需要使用Adapter,并且在开发中我们遇到的优化问题,出错概率较大的地方也基本来自Adapter,这是一个让人又爱又恨的角色。 言归正传,适配器是将两个不兼容的类融合在一起,它有点像粘合剂,将不同的东西通过一种转换使得它们能原创 2016-07-19 11:07:00 · 401 阅读 · 0 评论 -
回调模式——特殊的观察者模式
我们知道观察者模式是一对多的关系,一个被观察者与多个观察者之间的关系,而回调模式则是一对一的关系,其实在Android中,大量的使用到了回调模式,比如各种个样的clickListener,还有各种各样的CallBack都是回调模式。下面实现一个简单的回调模式。模仿Android中的按钮点击事件。 定义一个Button.java package com.test.callback; publi原创 2016-07-18 17:39:27 · 629 阅读 · 0 评论 -
观察者模式——解决、解耦的钥匙
观察者模式是一个使用率非常高的模式,它最常用的地方是GUI系统,订阅—发布系统。另外Android中的listview中的notifyDataSetChange函数,都是使用观察者模式。另外Android中的回调模式也有点观察者模式的影子,很像,但并不是完全的观察者模式,回调模式是一对一,观察者模式是一对多。 观察者模式的一个重要作用是解耦,将观察者与被观察者解耦,使得他们之间依赖性更小,甚至做原创 2016-07-18 17:14:38 · 500 阅读 · 0 评论 -
Android源码中的代理模式解析
Android源码下的比较经典的代理模式其中之一是ActivityManagerProxy代理类,其具体代理的ActivityManagerNative的子类ActivityManagerService,ActivityManagerService在这里就不在具体赘述了,这里主要梳理一下整个代理的框架。 ActivityManagerProxy是ActivityManagerNative的内部类原创 2016-07-20 21:26:47 · 941 阅读 · 0 评论 -
Android源码中的适配器模式
在Android开发过程中,ListView的Adapter是我们最常见的类型之一,我们需要使用Adapter加载Item View的布局,并且进行数据绑定、缓存复用等操作。代码大致如下: ListView myListView = (ListView)view.findViewById(R.id.id_list); MyAdapter adapter = new MyAdapter()原创 2016-07-19 22:36:07 · 1986 阅读 · 0 评论 -
设计模式之代理模式——编程好帮手
代理模式也称为委托模式,是一种结构型设计模式,所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。为其他对象提供一种代理以控制对这个对象的访问。 当无法或者不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实原创 2016-07-20 11:23:32 · 1116 阅读 · 2 评论 -
java设计模式——装饰模式
装饰模式也称为包装模式。结构型设计模式之一,其使用一种对客户端透明的方式动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一。 装饰模式可以动态的给一个对象添加一些额外的职责。就增加功能功能来说,装饰模式相比生成子类更为灵活。 装饰模式的UML类图如图: 抽象组件类:可以是一个接口或者抽象类,其充当的是被装饰的原始对象。 Component.java pub原创 2016-07-20 22:03:21 · 494 阅读 · 0 评论 -
设计模式之状态模式——随遇而安
1、状态模式介绍 状态模式中的行为是由状态决定的,不同的状态有不同的行为,状态模式把对象的行为包装在不同的具体状态对象里,每一个状态对象都有一个共同的抽象状态基类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。 2、定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了基类。 3、使用场景 1)当一个对象的行为取决于它的状态,并且它必须在运行时根据原创 2016-07-21 20:15:19 · 759 阅读 · 0 评论 -
策略模式——时势造英雄
1、定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们可以相互替换。策略模式让算法独立于使用它的客户端而独立变化。 注意:策略模式与状态的结构几乎完全一样。但是他们的目的、本质却不一样。 2、使用场景 1)针对同一种问题的多种处理方式、仅仅是因为具体行为有差别时, 2)需要安全的封装多种同一类型的操作时 3)出现同一抽象类有多个子类,而又需要使用if-else原创 2016-07-21 20:47:53 · 428 阅读 · 0 评论 -
设计模式之工厂模式——应用最广泛的模式
工厂模式主要分为三种,简单工厂模式、工厂方法模式、抽象工厂模式。 1、绪论 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助原创 2016-07-24 22:37:09 · 1799 阅读 · 2 评论