Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android深入之設計模式(一)委托模式

android深入之設計模式(一)委托模式

編輯:關於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);
    }
}

/**
 * 模擬按鈕
 * 
 * @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!");
        }
    }

}



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved