Android 리 셋 과 관찰자 모드 의 실현 원리

리 셋 과 관찰자 모델 의 실현 원리:쓸데없는 말 을 하지 않 고 직접 Demo 리 셋 의 원리:
image
image
image
image
image
관찰자 모드:
A 류 에서 피 관찰자 화 가 를 정의 합 니 다.

package com.example.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

import java.util.ArrayList;

/**
 * user: uidq0530 ,date: 2017-03-29.
 * description:
 *
 * @author xhunmon
 */
public class A extends View {

  private Paint mPaint;

  public A(Context context) {
    super(context);
    mPaint = new Paint();
  }

  //1.          
  public interface OnAListener{
    //       
    void look();
  }

  //2.    
  private ArrayList<OnAListener> lists = new ArrayList<>();

  //3.       
  public void register(OnAListener listener){
    lists.add(listener);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawText("    ", 50, 50, mPaint);

    //4.            
    for(int i=0 ;i<lists.size(); i++){
      lists.get(i).look();
    }
  }

  //5.       
  public void unregister(OnAListener listener){
    if(lists.contains(listener))
      lists.remove(listener);
  }
}
B 류 는 관찰자 인 데 사람 은 여러 개 있 을 수 있 지만 화 가 는 한 개 밖 에 없어 요.

package com.example.test3;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

import com.example.view.A;
/**
 * user: uidq0530 ,date: 2017-03-29.
 * description:
 *
 * @author xhunmon
 */
public class B extends Activity {

  private A.OnAListener mListener;
  private A mA;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mA = new A(this);
    //1.     
    mListener = new A.OnAListener() {

      //3.       ,         
      @Override
      public void look() {
        Toast.makeText(B.this, "    ,     A         ", Toast.LENGTH_SHORT).show();
      }
    };
    //2.    
    mA.register(mListener);

    setContentView(mA);
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    //4.    
    if(mListener != null)
      mA.unregister(mListener);
  }
}
결론:가장 흔히 볼 수 있 는 관찰 자 는 방송 이 고 관찰자 의 본질은 바로 반전 이기 때문에 관찰 자 를 실현 하 는 것 은 바로 반전 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기