Android Ap开发设计模式第八篇:抽象工厂模式

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 05:31 点击:

模式解读

  abstract 是“抽象”,factory 是“工厂”,所以合起来abstract factory 就是“抽象工厂”的意思。Abstract Factory Pattern 中的抽象工厂则是把各种抽象零件合成抽象产品。换句话说,处理的重点是在接口(api)而不是零件的具体实现。只利用接口(API)就能把零件组合成产品。

 

  模板方法模式和生成模式的情形是在子类进行具体的实现,而抽象工厂模式也同样是由子类来处理具体的实现。在子类就会出现具体工厂利用具体零件组合而成的具体产品。

 

 

程序示例

  本篇涉及的类较多,较之单例模式而言理解真来比较难。一步步来吧。

  本例将使用抽象工厂,制作输出一个HTML语言显示在Android 的文本上。由于涉及类比较多,先上UML图,再一一解释:

 

 

抽象零件:Item 类

  caption字段是此项目的“标题”。

  makeHtml 方法是抽象方法,须等待子类进行实现。一旦调用此方法时,其返回值即为HTML字符串(子类要有这样的执行功能)。代码:

 

public abstract class Item {

    protected String caption;
    
    public Item(String caption){
        this.caption=caption;
    }
    
    public abstract String makeHTML();
}

 

抽象零件:Link 类

  Link 类是以抽象方式表示HTML超链接的类。

  url 字段用来存储超链网站的URL。该抽象类实现Item 抽象类。代码:

 

/**
 * 以抽象方式 表示HTML超链接的类
 * @author Administrator
 *
 */
public abstract class Link extends Item{

    protected String url;
    public Link(String caption,String url) {
        super(caption);
        // TODO Auto-generated constructor stub
        this.url=url;
    }

     

}

 

 

 抽象零件:Tray类

  Tray 类是表示收集一个以上的Link 或Tray 类。

  Link 和Tray 则利用add 方法把它们找出来。add 方法对于“LINK”和“Tray” 这部分的表现方式则是将Link 和Tray 的父类Item 设为参数。

  Tray 类继承了Item 类的抽象方法makeHTML,但并未实现。所以Tray 类也是抽象类。代码:

 

/**
 * 表示收集一个以上的Link 或Tray的类
 * @author Administrator
 *
 */
public abstract class Tray extends Item{

    protected Vector<Item> tray=new Vector<Item>();
    
    public Tray(String caption) {
        super(caption);
        // TODO Auto-generated constructor stub
    }
    
    public void add(Item item){
   &n

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1