(一)托付模式简单介绍

托付模式是主要的设计模式之中的一个。托付。即是让还有一个对象帮你做事情。

更多的模式,如状态模式、策略模式、訪问者模式本质上是在更特殊的场合採用了托付模式。

托付模式使得我们能够用聚合来替代继承。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深入之设计模式(一)托付模式的更多相关文章

  1. Android使用的设计模式2——策略模式

    今天讲解一下策略模式,策略模式也是很常用的设计模式,对多种算法或者数据结构选择使用的情况下,经常会使用策略模式来管理这些算法.下面会简单讲解一下策略模式的概念和基本实现.然后结合Android里面的实 ...

  2. 《Android源码设计模式》--模板方法模式

    No1: 模板方法模式包括:抽象类(其中定义了一系列顺序方法).具体实现类A.具体实现类B 如果子类有实现不一样的细节,重写父类的某个方法即可 No2: AsyncTask对象调用execute方法后 ...

  3. 《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式

    [状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略, ...

  4. 《Android源码设计模式》--Builder模式

    No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: ...

  5. 《Android源码设计模式》--策略模式

    No1: 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. No2: 使用场景: 1)针对同一类型问题的多种处理方式,仅 ...

  6. 《Android源码设计模式》--原型模式

    No1: 原型模式使用场景: 1)类初始化需要消耗非常多的资源,这个资源包括数据.硬件资源等,通过原型复制避免这些消耗 2)通过new产生一个对象需要非常繁琐的数据准备货访问权限,这是可以使用原型模式 ...

  7. Android 设计模式之MVC模式

    说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...

  8. [转] Android中的设计模式-备忘录模式

    转自Android中的设计模式-备忘录模式 定义 备忘录设计模式的定义就是把对象的状态记录和管理委托给外界处理,用以维持自己的封闭性. 比较官方的定义 备忘录模式(Memento Pattern)又叫 ...

  9. android classloader双亲托付模式

    概述 ClassLoader的双亲托付模式:classloader 按级别分为三个级别:最上级 : bootstrap classLoader(根类载入器) : 中间级:extension class ...

随机推荐

  1. 解决idea开启tomcat报Configuration Error: deployment source 'xxx:war exploded' is not valid错

    这个问题比较棘手, 出错了的时候Tomcat服务器不能正常运行, 导致网页无法打开, 小组成员都说"Tomcat炸了"! 好在这个这个xml配置文件是自动生成的,重新生成一下就好了 ...

  2. 06网络通信udp-tcp、正则

    一. udp网络程序 1.    udp网络程序-发送数据 1)创建客户端套接字 2)发送/接收数据 3)关闭套接字 from socket import * # 1. 创建udp套接字 udp_so ...

  3. tomcat无法正确解析请求参数

    24-Mar-2018 14:11:20.564 INFO [http-nio-8080-exec-3] org.apache.coyote.http11.Http11Processor.servic ...

  4. 基础知识:if条件、while循环、for循环 相关练习

    1.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! while True: name = input('请输入用户名:') psw = inpu ...

  5. Borrowers

    Description I mean your borrowers of books - those mutilators of collections, spoilers of the symmet ...

  6. JSONArray 遍历方式

    第一种(java8):遍历JSONArray 拼接字符串 public static void main(String[] args) { JSONArray jSONArray = new JSON ...

  7. 添物不花钱学JavaEE(基础篇)-XML

    XML(Extensible Markup Language) XML在日常工作中经常用到,必须有个了解,不过认识一下即可,不要太浪费时间.实际用到 参考图书 <XML入门经典>大而全,不 ...

  8. 一个WebLoad 脚本范例

    //initial the Agenda function InitAgenda(){     wlGlobals.SaveHeaders = true;     wlGlobals.SaveSour ...

  9. 状态压缩DP总结

    POJ1185 炮兵部队问题: 在平原上才能放置炮兵,每个炮兵的上下左右2格之内都不能出现别的炮兵 可以考虑在当前行放置炮兵它的右侧和下侧绝对不会出现炮兵即可,左侧和上侧就能省去考虑 明显的状态压缩d ...

  10. [luoguP1019] 单词接龙(DFS)

    传送门 不知为什么,判断全部包含反而A不了,不判断反而A了,╮(╯▽╰)╭ 代码 #include <cstdio> #include <iostream> #define m ...