`
yehoubin
  • 浏览: 24250 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android设计模式系列--工厂方法模式

 
阅读更多

工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式。
android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类。
今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式。 
工厂方法模式,Factory Method,简单的方式,不简单的应用。

1.意图
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方式模式使一个类的实例化延迟到其子类。
热门词汇:虚构造器 延迟 创建对象 子类 

2.结构图和代码
我们先看看标准的工厂方法结构图:


先抽象的产品类,抽象的工厂类,然后用客户端具体的工厂生产相应的具体的产品,但是客户端并不知道具体的产品是怎么生产的,生产的过程封装在工厂里。所以说,某种程度上,工厂方法模式改变了我们直接用new创建对象的方式,一个很好的开始,意义重大。
以ThreadFactory为例:

这张图其实和原本的结构图有细微的区别,那就是参数化得工厂,而且从业务意义上也有些不同,但是思想是一样的。
我们来看下具体的代码:

  1. //抽象产品  
  2. public interface Runnable {  
  3.     public abstract void run();  
  4. }  
  5.    
  6. //抽象工厂  
  7. public interface ThreadFactory {  
  8.     Thread newThread(Runnable r);  
  9. }  

下面是具体的实现:
比如AsyncTask类中工厂的具体实现如下:

  1. //工厂实现类  
  2. private static final ThreadFactory sThreadFactory = new ThreadFactory() {  
  3.     private final AtomicInteger mCount = new AtomicInteger(1);  
  4.   
  5.     public Thread newThread(Runnable r) {  
  6.         return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());  
  7.     }  
  8. };  
  9. //那么产品类在哪里呢?  
  10. //做为参数Runnable r,我们可以创建千千万万个此系列的产品类  
  11. //同理,我们可以创建另外类似的工厂,生产某种专门的线程,非常容易扩展  

看到这里,我们一方面为它的生产便利性感叹,一方面又为没创建某类产品都要创建一个工厂而感到繁琐,所以我们下面介绍简单工厂,它的结构图如下:


简单工厂把抽象工厂去掉了,你就创建一个专门生产某类产品就好。在一些特定而又不负责的领域非常实用方便套用这个模式。
在android中的Connection类中使用到了这个类:


其中Connection这个抽象类,既充当抽象产品类,也充当具体工厂类。
因为这种情况下,我们往往需要的是马上生产子类,getConnection方法往往是静态的,所以简单工厂,也叫静态工厂方法。
我们看看代码如下:

  1. abstract class Connection{      
  2.     static Connection getConnection(  
  3.             Context context, HttpHost host, HttpHost proxy,  
  4.             RequestFeeder requestFeeder) {  
  5.    
  6.         if (host.getSchemeName().equals("http")) {  
  7.             return new HttpConnection(context, host, requestFeeder);  
  8.         }  
  9.    
  10.         // Otherwise, default to https  
  11.         return new HttpsConnection(context, host, proxy, requestFeeder);  
  12.     }  
  13. }  

这就是简单工厂,一个很简单的参数化工厂,真的很简单。

3.效果
1.创建型模式;
2.参数化工厂方法模式得到相应的对象;
3.为子类提供挂钩;
4.连接平行的类层次。

 

出自:http://mobile.51cto.com/ahot-418979.htm

分享到:
评论

相关推荐

    Java和Android源码设计模式 2017-03-21

    ### Java和Android源码设计模式解析 #### 前言:设计模式的重要性 设计模式是软件工程中的一个重要概念,它代表了一种最佳实践,能够帮助开发者解决常见的编程问题。掌握设计模式不仅能够提升代码的质量,还能提高...

    android应用开发设计模式之-策略模式

    在实际项目中,我们还可以结合其他设计模式,如单例模式(用于管理全局策略)和工厂模式(用于创建策略对象),进一步提升代码的结构和质量。总之,策略模式是Android应用开发中一个强大的工具,值得开发者深入理解...

    android常用设计模式

    Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...

    java抽象工厂模式实例----手机工厂

    抽象工厂模式是软件设计模式中的一种,属于创建型模式,它的主要目的是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Java编程中,这个模式经常被用来实现跨平台或者不同品牌产品的一致性...

    Android设计模式(详细讲解了10个Android设计模式)

    详细讲解了组合模式、观察者模式、单例模式、模板方法模式、备忘录模式、享元模式、命令模式、工厂方法模式、适配器模式 原型模式等10个Android设计模式,和CSDN上其他讲Android设计模式的文章完全不同。讲解详细,...

    Android-23种设计模式

    在Android开发中,设计模式是提升代码质量和可维护性的重要工具。设计模式是对软件设计中常见问题的解决方案的模板,经过时间和实践的检验,能够帮助开发者有效地解决复杂性问题,提高代码的重用性和可扩展性。本...

    android设计模式

    "android设计模式"这一主题,主要涵盖了一些常见的设计原则、模式以及如何在Android环境中应用它们。《设计模式之禅》作为一本经典著作,其深入浅出的讲解方式使得读者能够轻松掌握设计模式的核心理念。 1. **设计...

    Android设计模式

    "Android设计模式"这个主题涵盖了多种在Android系统源码以及应用程序开发中常用的设计模式。这些模式是解决常见编程问题的成熟方案,通过理解和应用它们,可以显著提高代码质量。 设计模式分为三大类:创建型模式、...

    Android源码设计模式解析与实战.PDF(完整版)

    ### Android设计模式概述 #### 设计模式定义 设计模式是软件工程领域的一个重要概念,它代表着在特定场景下解决常见问题的有效方法。对于Android开发者而言,了解并掌握这些设计模式能够帮助他们编写更加高效、可...

    Android设计模式系列之工厂方法模式

    工厂方法模式是面向对象设计模式的一种,主要用于解决对象创建的问题。在Android开发中,它被广泛应用,尤其是在需要根据条件或动态地创建不同类型的对象时。本文将深入探讨工厂方法模式的概念、结构、目的以及在...

    android 设计模式之Listview不同类型Item利用工厂模式的复用

    在"android 设计模式之Listview不同类型Item利用工厂模式的复用"这一主题中,我们主要探讨如何应用工厂模式来解决ListView中多类型Item的问题。首先,我们需要定义一个接口或抽象类,如`BaseItem`,它包含了所有Item...

    Java和Android源码设计模式

    ### Java和Android源码设计模式 #### 前言:迈向精通之路——设计模式的重要性 在软件开发领域,设计模式被视为提升代码质量和可维护性的关键工具。本文将深入探讨Java和Android开发中常用的设计模式,并结合实际...

    Android源码设计模式解析与实战 pdf 完整版

    总的来说,《Android源码设计模式解析与实战》是一本深入浅出的Android设计模式教程,对于希望提升Android开发技能的工程师来说,是一份不可多得的学习资料。通过对书中的知识点进行深入学习和实践,开发者将能更好...

    基于Android设计模式之--SDK源码之策略模式的详解

    策略模式在Android开发中是一种非常重要的设计模式,它允许程序在运行时动态选择执行的算法或策略,从而提高代码的灵活性和可扩展性。在Android SDK源码中,策略模式被广泛应用于各种场景,比如动画的实现就是一个...

    Android源码设计模式

    2. **工厂模式** (Factory): Android中的`LayoutInflater`就是一个工厂模式的例子,它根据XML布局文件创建视图对象。通过调用`inflate()`方法,我们可以动态地生成UI组件。 3. **观察者模式** (Observer): `...

    《Android源码设计模式解析与实战》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一本关于Android源码设计模式的书籍,并提供了PDF版本的下载链接。下面将围绕这本书籍所涉及的核心知识点进行详细的解析与介绍。 ### 设计模式简介 设计模式是在软件工程...

    Android-用Kotlin实现设计模式代码

    4. **抽象工厂模式(Abstract Factory)**:当需要为一系列相关或相互依赖的对象提供接口时,抽象工厂模式可以创建一系列相关的工厂。在Android中,如创建不同平台(Android,iOS)的UI组件。 5. **策略模式(Strategy...

    android 24种设计模式介绍与6大设计原则

    在Android开发中,设计模式和设计原则是提升代码质量、可维护性和可扩展性的重要工具。以下是关于"Android 24种设计模式介绍与6大设计原则"的详细阐述: 一、六大设计原则 1. **单一职责原则(Single ...

Global site tag (gtag.js) - Google Analytics