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 [email protected]
 *
 */
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 [email protected]
 *
 */
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 写的好像太简单了,不过,外观模式确实也算是用的比较多的,而且比较简单的模式;

按照我的理解;

从某种意义上来说,将插件式安装理解成一种外观模式,似乎显得跟简单,定义太浅显了一些,

插件式的安装目的是为了启动子系统,除了唤起子系统以外,却很少会由主系统调用到子系统内部的方法,当然也不排除有这样的情况,

若有则不太符合插件式安装与更新的目的;所以确实有些无解了。

问题先留在此处了。

时间: 2024-08-05 16:45:22

Android设计模式--外观模式的相关文章

设计模式 - 外观模式(facade pattern) 详解

外观模式(facade pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy 外观模式(facade pattern): 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用. 外观模式包含三个部分: 1. 子系统: 子类, 单个复杂子类 或 多个子类; 2. 外观(facade)类: 把子系统设计的更加容易使用; 3. 客户: 只需要调用外观类. 与适配器模式(adapter pattern)的

设计模式 外观模式 一键电影模式

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.其实就是为了方便客户的使用,把一群操作,封装成一个方法. 举个例子:我比较喜欢看电影,于是买了投影仪.电脑.音响.设计了房间的灯光.买了爆米花机,然后我想看电影的时候,我需要

浅谈Python设计模式 - 外观模式

声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 外观模式 外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口.类似现实世界中的电脑,开机按钮可以说就是一个简单的调用接口,帮用户屏蔽了复杂的内部电路. 外观设计模式 -- 有助于隐藏系统的内部复杂性,并且通过一个简化的接口向客户端暴露必要的部分.本质上,外观是在已有复杂系统之上实现的一个抽象层. 本来想引用书中的例子,但是其整个代码被复杂化,不好理解.然后在网上看到一

java语言实现结构型设计模式—外观模式

一.描述 外观模式又叫门面模式,就是对一个复杂的系统进行包装,该系统对外的接口统一由外观类提供.当一个复杂的系统需要对外提供接口时,就需要将对外提供的接口统一封装在一个外观类中供外系统使用.外观模式最大的特点就是将细粒度的对象包装成粗粒度的对象,应用程序通过访问这个外观对象来完成细粒度对象的调用.这样应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. 总的来说,外观模式就是为子系统对外提供的一组接口,这组接口提供一个统一的界面,使得其它

设计模式-外观模式(Facade Pattern)

本文由@呆代待殆原创,转载请注明出处:http://www.cnblogs.com/coffeeSS/ 外观模式简介 外观模式的作用用一句话说就是简化接口,举个例子楼主每次编程的时候都要点开IDE.点开一本电子书.点开音乐播放器.点开QQ,非常的麻烦,如果能有一个一键打开这些所有东西的功能键是不是会很好?这就是外观模式所做的事情. 外观模式的定义和基本结构 定义:外观模式为一个接口众多的子系统提供一个统一的高层接口,使这个子系统更加容易使用. 来自<Head First>里的一张结构图 sub

设计模式 --外观模式(Facade)

什么是外观模式? 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用. 简单点说:外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便. 概述: 在真实的应用系统中,一个子系统可能由很多类组成.子系统的客户为了它们的需要,需要和子系统中的一些类进行交互.客户和子系统的类进行直接的交互会导致客户端对

设计模式-外观模式的理解

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,使得这一子系统更加容易使用. 在机房收费系统中,外观模式用来解除U层和B层之间的耦合,按着以前的做法,在U层中的功能调用B层中的方法的时候,就需要U层完全了解B层中的方法都有哪些,自己的U层又是需要用到哪一个方法,再调用B层中的方法.这样的做法使得B层的东西完全暴露在了U层中,而且增加了U层和B层两者的耦合程度,B层做出的修改要考虑到U层的调用的问题,不利于系统的安全性.增加的外观模式,把B层中的一组方法都放到外观类Fa

Android设计模式—策略模式

1.策略模式概念 定义一系列算法,把他们独立封装起来,并且这些算法之间可以相互替换.策略模式主要是管理一堆有共性的算法,客户端可以根据需要,很快切换这些算法,并且保持可扩展性. 策略模式的本质:分离算法,选择实现. 2.策略模式实现 下面针对策略模式说一个小型的实现例子,个人觉得学习设计模式,最好的方法是看看设计模式概念,然后先看看简单的模式实现的例子.策略模式实现起来,主要需要3部分:抽象接口.实现算法.上下文. //算法的接口 public interface PriceStrategy {

[设计模式] 外观模式facade

外观模式应该是用的很多的一种模式,特别是当一个系统很复杂时,系统提供给客户的是一个简单的对外接口,而把里面复杂的结构都封装了起来.客户只需使用这些简单接口就能使用这个系统,而不需要关注内部复杂的结构.DP一书的定义:为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.举个编译器的例子,假设编译一个程序需要经过四个步骤:词法分析.语法分析.中间代码生成.机器码生成.学过编译都知道,每一步都很复杂.对于编译器这个系统,就可以使用外观模式.可以定义

小菜学设计模式——外观模式

背景 一个坦克系统,子系统是履带系统,发动机系统,火炮系统,防卫装甲系统等.对外的接口就是暴露给使用人员的是Run(), shot(), stop()等.如果没有采用Facade模式,开动坦克需要直接依赖履带系统,发动机系统.直接去操作履带,操作发动机?各个接口和子系统都产生了紧耦合.(引用自互联网) 问题产生了:组件的客户(接口)和组件内各个复杂子系统有过多的耦合,随着外部客户程序和各个子系统的变化,这种耦合面临着变化的挑战. 如何简化外部客户程序和系统间的交互接口,如何将外部程序的演化和内部