Android设计模式(九)--外观模式
問題:在Android中,Apk能夠有微信,QQ為代表的插件式安裝更新功能;
那么問題來了,主系統(tǒng)(姑且這么說)調(diào)用插件式安裝的子系統(tǒng)。由子系統(tǒng)提供對外的訪問。屬不屬于一種外觀模式呢?
先說設(shè)計模式:
1、定義:
為子系統(tǒng)中的一組接口提供一個統(tǒng)一接口。
Facade模式定義了一個高層接口,這個接口使得這子系統(tǒng)更easy使用。
2、目的:
減少對子系統(tǒng)的復(fù)雜度和依賴。這使得子系統(tǒng)更易于使用和管理。
提高代碼的質(zhì)量。代碼維護性,擴展性。
3、設(shè)計:
在設(shè)計之初。就要有意識的將兩個不同的層面分離。層與層之間建立外觀的Facade,
添加一個Facade能夠提供一個簡單的接口降低他們之間的依賴。
這我們在Android編程的時候,能夠有意識的將數(shù)據(jù)訪問和業(yè)務(wù)邏輯層嚴(yán)格分離開來。使得設(shè)計更加的低耦合。
尤其是對子系統(tǒng)的維護上,子系統(tǒng)越來越大時,外觀模式尤為重要!
4、簡單的demo:
首先是子系統(tǒng):
package com.example.demo.Facade; /*** 子系統(tǒng)設(shè)計* @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; /*** 外觀模式* 統(tǒng)一對外訪問* @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 寫的好像太簡單了。只是,外觀模式確實也算是用的比較多的,并且比較簡單的模式;
依照我的理解。
從某種意義上來說。將插件式安裝理解成一種外觀模式。似乎顯得跟簡單,定義太淺顯了一些,
插件式的安裝目的是為了啟動子系統(tǒng)。除了喚起子系統(tǒng)以外,卻非常少會由主系統(tǒng)調(diào)用到子系統(tǒng)內(nèi)部的方法,當(dāng)然也不排除有這種情況,
若有則不太符合插件式安裝與更新的目的;所以確實有些無解了。
問題先留在此處了。
總結(jié)
以上是生活随笔為你收集整理的Android设计模式(九)--外观模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【资源地址】
- 下一篇: powerdesigner设置主键为自增