Android設計模式--面板模式

來源:互聯網
上載者:User

Android設計模式--面板模式

問題:在Android中,Apk可以有,QQ為代表的外掛程式式安裝更新功能;

那麼問題來了,主系統(姑且這麼說)調用外掛程式式安裝的子系統,由子系統提供對外的訪問,屬不屬於一種面板模式呢?

 

先說設計模式:

1、定義:

為子系統中的一組介面提供一個統一介面;

Facade模式定義了一個高層介面,這個介面使得這子系統更容易使用。

2、目的:

降低對子系統的複雜度和依賴。這使得子系統更便於使用和管理。

提高代碼的品質,代碼維護性,擴充性。

 

3、設計:

在設計之初,就要有意識的將兩個不同的層面分離,層與層之間建立外觀的Facade,
增加一個Facade可以提供一個簡單的介面減少他們之間的依賴。

 

這我們在Android編程的時候,可以有意識的將資料訪問和商務邏輯層嚴格分離開來,使得設計更加的低耦合。

尤其是對子系統的維護上,子系統越來越大時,面板模式尤為重要!

 

4、簡單的demo:

首先是子系統:

 

package com.example.demo.Facade;/** * 子系統設計 * @author qubian * @data 2015年6月9日 * @email naibbian@163.com * */public abstract class Lottery {protected abstract String getLotteryName() ;protected abstract String getLotteryNum() ;protected abstract String getRandomNum() ;}package com.example.demo.Facade;public class SSQLottery extends Lottery{@Overrideprotected String getLotteryName() {return "SSQ";}@Overrideprotected String getLotteryNum() {return "3";}@Overrideprotected String getRandomNum() {return "6";}}package com.example.demo.Facade;public class DLTLottery extends Lottery{@Overrideprotected String getLotteryName() {return "DLT";}@Overrideprotected String getLotteryNum() {return "1";}@Overrideprotected String getRandomNum() {return "7";}}

 

然後是Facade以及使用:

 

package com.example.demo.Facade;/** * 面板模式 * 統一對外訪問 * @author qubian * @data 2015年6月9日 * @email naibbian@163.com * */public class Facade {SSQLottery ssq;public String getLotteryName(String name){if (name.equalsIgnoreCase("SSQ")) {ssq = new SSQLottery();}return ssq.getLotteryName();}}package com.example.demo.Facade;import android.util.Log;public class UseFacade {public void use(){Facade facade = new Facade();Log.i("TAG", facade.getLotteryName("SSQ"));}}

demo 寫的好像太簡單了,不過,面板模式確實也算是用的比較多的,而且比較簡單的模式;

 

按照我的理解;

從某種意義上來說,將外掛程式式安裝理解成一種面板模式,似乎顯得跟簡單,定義太淺顯了一些,

外掛程式式的安裝目的是為了啟動子系統,除了喚起子系統以外,卻很少會由主系統調用到子系統內部的方法,當然也不排除有這樣的情況,

若有則不太符合外掛程式式安裝與更新的目的;所以確實有些無解了。

問題先留在此處了。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.