android深入之设计模式(一)托付模式
(一)托付模式简单介绍
托付模式是主要的设计模式之中的一个。托付。即是让还有一个对象帮你做事情。
更多的模式,如状态模式、策略模式、訪问者模式本质上是在更特殊的场合採用了托付模式。
托付模式使得我们能够用聚合来替代继承。java-组合优于继承。
最简单的java托付模式
class RealPrinter {
void print() {
System.out.println("real printer");
}
}
class Printer {
RealPrinter realPrinter = new RealPrinter();
public void print() {
realPrinter.print();
}
}
/**
* 简单托付模式
*
* @author peter_wang
* @create-time 2014-5-19 下午5:39:42
*/
public class DelegationDemo { /**
* @param args
*/
public static void main(String[] args) {
Printer printer = new Printer();
printer.print();
} }
(二)android中的托付模式
android中的listerner事件即是托付模式,比方Button点击事件。
我们来模拟整个点击事件是怎样运用托付模式的。
/**
* 模拟基本View
*
* @author peter_wang
* @create-time 2014-5-19 下午5:03:55
*/
public class View { private OnClickListener mOnClickListener; /**
* 模拟点击事件
*/
public void clickEvent() {
if (mOnClickListener != null) {
mOnClickListener.onClick(this);
}
} public void setOnClickListener(OnClickListener onClickListener) {
this.mOnClickListener = onClickListener;
} /**
* 点击事件接口
*
* @author peter_wang
* @create-time 2014-5-19 下午5:05:45
*/
public interface OnClickListener {
public void onClick(View v);
}
}
/**
* 模拟button
*
* @author peter_wang
* @create-time 2014-5-19 下午5:17:57
*/
public class Button
extends View { }
/**
* 模拟基本Activity类
*
* @author peter_wang
* @create-time 2014-5-19 下午5:20:38
*/
public class Activity { public static void main(String[] args) {
Activity activity = new Activity();
activity.onCreate();
} /**
* 模拟OnCreate方法
*/
protected void onCreate() { } }
/**
* 托付模拟页面
*
* @author peter_wang
* @create-time 2014-5-19 下午5:19:22
*/
public class DelegationActivity
extends Activity
implements OnClickListener { private Button mButton; @Override
protected void onCreate() {
super.onCreate();
mButton = new Button();
mButton.setOnClickListener(this); // 模拟点击事件
mButton.clickEvent();
} @Override
public void onClick(View v) {
if (v == mButton) {
System.out.println("onClick() is callback!");
}
} }
android深入之设计模式(一)托付模式的更多相关文章
- Android使用的设计模式2——策略模式
今天讲解一下策略模式,策略模式也是很常用的设计模式,对多种算法或者数据结构选择使用的情况下,经常会使用策略模式来管理这些算法.下面会简单讲解一下策略模式的概念和基本实现.然后结合Android里面的实 ...
- 《Android源码设计模式》--模板方法模式
No1: 模板方法模式包括:抽象类(其中定义了一系列顺序方法).具体实现类A.具体实现类B 如果子类有实现不一样的细节,重写父类的某个方法即可 No2: AsyncTask对象调用execute方法后 ...
- 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式
[状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略, ...
- 《Android源码设计模式》--Builder模式
No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: ...
- 《Android源码设计模式》--策略模式
No1: 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. No2: 使用场景: 1)针对同一类型问题的多种处理方式,仅 ...
- 《Android源码设计模式》--原型模式
No1: 原型模式使用场景: 1)类初始化需要消耗非常多的资源,这个资源包括数据.硬件资源等,通过原型复制避免这些消耗 2)通过new产生一个对象需要非常繁琐的数据准备货访问权限,这是可以使用原型模式 ...
- Android 设计模式之MVC模式
说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...
- [转] Android中的设计模式-备忘录模式
转自Android中的设计模式-备忘录模式 定义 备忘录设计模式的定义就是把对象的状态记录和管理委托给外界处理,用以维持自己的封闭性. 比较官方的定义 备忘录模式(Memento Pattern)又叫 ...
- android classloader双亲托付模式
概述 ClassLoader的双亲托付模式:classloader 按级别分为三个级别:最上级 : bootstrap classLoader(根类载入器) : 中间级:extension class ...
随机推荐
- Learning Discriminative and Transformation Covariant Local Feature Detectors实验环境搭建详细过程
依赖项: Python 3.4.3 tensorflow>1.0.0, tqdm, cv2, exifread, skimage, glob 1.安装tensorflow:https://www ...
- python 列表生成式、lower()和upper()的使用
参考: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868196389 ...
- js+flash(as3)实现复制文字内容到剪切板实例
/* SWFObject v2.2 swfobject.js */ var swfobject=function(){var D="undefined",r="objec ...
- CSS三栏布局的四种方法
总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...
- 笔试算法题(10):深度优先,广度优先以及层序遍历 & 第一个仅出现一次的字符
出题:要求实现层序遍历二元搜索树,并对比BFS与DFS的区别 分析:层序遍历也就是由上至下,从左到右的遍历每一层的节点,类似于BFS的策略,使用Queue可以实现,BFS不能用递归实现(由于每一层都需 ...
- 性能测试培训day2
上节课 性能测试,多线程.协议.场景 实施:1,脚本开发 运行 排错(看回放,然后view-test_results,看业务) 参数化.关联.检查点.事务.思考时间.集合点 参数化:不做参数化的话, ...
- 第二次:Ubuntu16.04 系统怎么截图
一开始想着写文章不用图,全靠文字描述,可是我错了,技术类文字没有图怎么能说的清楚,于是乎开始找在Ubuntu系统下的截图工具,网络神奇,发现了这个,以下命令可以反复试试: ubuntu 会自带一款截图 ...
- linux命令 iperf-网络性能测试工具
博主推荐:更多网络测试相关命令关注 网络测试 收藏linux命令大全 iperf命令是一个网络性能测试工具.iperf可以测试TCP和UDP带宽质量.iperf可以测量最大TCP带宽,具有多种参数和 ...
- (贪心) Vacations 求休息的最少天数
Description Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasy ...
- Android OkHttp与物理存储介质缓存:DiskLruCache(2)
Android OkHttp与物理存储介质缓存:DiskLruCache(2) 本文在附录文章8,9的基础之上,把Android OkHttp与DiskLruCache相结合,综合此两项技术,实 ...