Android 학습 의 디자인 모델 의 관찰자 모델

오늘 은 관찰자 모드 를 쓰 겠 습 니 다.
관찰자 모드 가 뭐 죠?예 를 들 어 밤, 예 를 들 어 공유 의 예 이다. 만약 에 사장 이 모든 공유 SDK 가 통합 되 고 기능 을 개방 해 야 한다 면 웨 이 보 와 위 챗 공유 기능 은 관찰자 이다. 그들 은 시기 가 성숙 되 어야 만 사용 할 수 있다. 그러면 이 시 기 는 바로 피 관찰자 이다.예약 기능 에 해당 해 제품 이 출시 되면 본 격 적 으로 구 매 할 수 있다.
아니면 가장 간단 한 예 를 보 자.
먼저 인 터 페 이 스 를 써 서 웨 이 보 와 위 챗 에서 자주 사용 하 는 방법 을 추출 합 니 다.
/**  *       *  * @author yuzhentao  */ public interface ShareListener { /**  *     */  void share();  }

이 인터페이스 가 있 으 면 웨 이 보 와 위 챗 은 이 를 실현 함으로써 호출 자의 수 요 를 만족 시 킬 수 있다.
/**  *     *  * @author yuzhentao  */ public class Weibo implements ShareListener { @Override  public void share() { Log.e("yuzhentao", "     ");  } }
/**  *     *  * @author yuzhentao  */ public class Weixin implements ShareListener { @Override  public void share() { Log.e("yuzhentao", "     ");  } }

그리고 피 관찰자:
/**  *         *  * @author yuzhentao  */ public class ShareObserver {

    private ArrayList<ShareListener> shareListenerList = new ArrayList<>();   public void integrateShareSDK(ShareListener shareListener) {
        shareListenerList.add(shareListener);  Log.e("yuzhentao", "     " + shareListenerList.size() + "   SDK");  }

    public void share() {
        Log.e("yuzhentao", "       ");  for (ShareListener shareListener : shareListenerList) {
            shareListener.share();  }
    }

}

때 가 되면 share () 방법 으로 웨 이 보 와 위 챗 을 공유 합 니 다.
마지막 으로 메 인 인터페이스 입 니 다. 먼저 피 관찰자 에 게 가서 '예약' 을 한 다음 에 2 초 지연 으로 이 기다 리 는 과정 을 모 의 한 다음 에 share () 방법 을 호출 합 니 다.
/**  *      *  * @author yuzhentao  */ public class MainActivity extends Activity {

    @Override  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  ShareObserver shareObserver = new ShareObserver();  shareObserver.integrateShareSDK(new Weixin());  shareObserver.integrateShareSDK(new Weibo());  new AsyncTask<Void, Void, Void>() {
            @Override  protected Void doInBackground(Void... params) {
                try {
                    Thread.sleep(2000);  } catch (InterruptedException e) {
                    e.printStackTrace();  }
                return null;  }
        };  shareObserver.share();  }

}

모두 에 게 도움 이 되 기 를 바 랍 니 다.
데모 주소:http://download.csdn.net/detail/qq_23940659/9489845

좋은 웹페이지 즐겨찾기