zoukankan      html  css  js  c++  java
  • 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!");
            }
        }
    
    }



  • 相关阅读:
    学习Java书籍推荐和面试网站推荐
    Java 多线程学习扩展
    Java Excel 导入导出(二)
    Java Excel 导入导出(一)
    Matplotlib库(二)
    Matplotlib库(一)
    【转】MATLAB导出精美的论文插图
    图像的手绘效果
    Numpy库的使用(二)
    Numpy库的使用(一)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7145242.html
Copyright © 2011-2022 走看看