Android设计模式(九)--外观模式
问题:在Android中,Apk能够有微信,QQ为代表的插件式安装更新功能;
那么问题来了,主系统(姑且这么说)调用插件式安装的子系统。由子系统提供对外的訪问。属不属于一种外观模式呢?
先说设计模式:
1、定义:
为子系统中的一组接口提供一个统一接口。
Facade模式定义了一个高层接口,这个接口使得这子系统更easy使用。
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{ @Override
protected String getLotteryName() {
return "SSQ";
} @Override
protected String getLotteryNum() {
return "3";
} @Override
protected String getRandomNum() {
return "6";
} }
package com.example.demo.Facade; public class DLTLottery extends Lottery{ @Override
protected String getLotteryName() {
return "DLT";
} @Override
protected String getLotteryNum() {
return "1";
} @Override
protected 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 写的好像太简单了。只是,外观模式确实也算是用的比較多的,并且比較简单的模式;
依照我的理解。
从某种意义上来说。将插件式安装理解成一种外观模式。似乎显得跟简单,定义太浅显了一些,
插件式的安装目的是为了启动子系统。除了唤起子系统以外,却非常少会由主系统调用到子系统内部的方法,当然也不排除有这种情况,
若有则不太符合插件式安装与更新的目的;所以确实有些无解了。
问题先留在此处了。
Android设计模式(九)--外观模式的更多相关文章
- 设计模式之 外观模式详解(Service第三者插足,让action与dao分手)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,LZ今天给各位分享一 ...
- 每天一个设计模式-2 外观模式(Facade)
每天一个设计模式-2 外观模式(Facade) 1.生活中的示例 客户想要购买一台电脑,一般有两种方法: 1.自己DIY,客户需要知道组成电脑的所有电子器件,并且需要熟悉那些配件,对客户要求较高. ...
- C#设计模式(11)——外观模式(Facade Pattern)
一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ...
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
原文:乐在其中设计模式(C#) - 外观模式(Facade Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 外观模式(Facade Pattern) 作者:webabcd 介绍 ...
- Android 设计模式之MVC模式
说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Contr ...
- 8.4 GOF设计模式三: 外观模式 Facade
GOF设计模式三: 外观模式 Facade “现有系统”功能强大.复杂,开发“新系统”需要用到其中一部分,但又要增加一部 分新功能,该怎么办?4.1 Facade Pattern: Key Fea ...
- 北风设计模式课程---外观模式(Facade)总结
北风设计模式课程---外观模式(Facade)总结 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备 ...
- js设计模式——2.外观模式
js设计模式——2.外观模式
- python设计模式之外观模式
python设计模式之外观模式 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见.许多情况下,我们并不想把这种复杂性暴露给客户端.外观设计模式有助于隐藏系统 ...
- Java设计模式菜鸟系列(九)外观模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...
随机推荐
- phonegap与H5中的接口对比
接口 HTML5 phonegap 差异 地理定位 geolocation 单次定位: navigator.geolocation.getCurrentPosition(Success, [error ...
- zabbix 3.2 高可用实现方式一,亲测无坑
1.架构设计图 2.设计说明 1. 基础架构为LAMP环境,采用keepalived实现zabbix服务器高可用,保证主server的mysql或者httpd宕掉后能切换到从server. 2.数据库 ...
- 基于gitHub+hexo搭建的个人博客
文章导航 前期准备 安装hexo 修改hexo主题 自定义主题 部署本地文件到github查看 我的第一篇博客 前期准备 下载安装git命令行工具.node及npm环境 注册自己的GitHub账号 安 ...
- 使用springboot完成密码的加密解密
现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴这样的大公司来说,信息安全是最为重要的一个话题,举个简单的例子: 就像这样的密码公开化,很容易造成一定的信息的泄露.所以今天我们要讲的就 ...
- linux操作系统基础篇(九)
shell脚本的运算符与流程控制 1.运算符 1.1 算术运算符 + - * / % [root@MiWiFi-R3-srv ~]# echo $[3+1]4 1.2 关系操作 与(())连用 < ...
- thinphp原生异步分页
异步分页: $sql="............"; $result=$m->query($sql); $count =count($result); $page ...
- 非关系型数据库redis-java基本操作
概述 redis是一个key-value的nosql数据库(非关系型数据库).支持存储的value类型包括string(字符串).list(链表).set(集合).zset(sorted set -- ...
- 2017-11-22 Intall Ubuntu Log
重启之后进入不了系统,安装工具check defect也不好用(问题尚不清楚),决定重做系统 直接用u盘(Universal_USB_Installer制作的安装工具,之前用都没有问题)安装,前面一起 ...
- T-SQL的进阶:超越基本级别3:构建相关子查询——701小组
T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...
- 使用numpy实现批量梯度下降的感知机模型
生成多维高斯分布随机样本 生成多维高斯分布所需要的均值向量和方差矩阵 这里使用numpy中的多变量正太分布随机样本生成函数,按照要求设置均值向量和协方差矩阵.以下设置两个辅助函数,用于指定随机变量维度 ...