工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式。
android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类。
今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式。
工厂方法模式,Factory Method,简单的方式,不简单的应用。
1.意图
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方式模式使一个类的实例化延迟到其子类。
热门词汇:虚构造器 延迟 创建对象 子类
2.结构图和代码
我们先看看标准的工厂方法结构图:
先抽象的产品类,抽象的工厂类,然后用客户端具体的工厂生产相应的具体的产品,但是客户端并不知道具体的产品是怎么生产的,生产的过程封装在工厂里。所以说,某种程度上,工厂方法模式改变了我们直接用new创建对象的方式,一个很好的开始,意义重大。
以ThreadFactory为例:
这张图其实和原本的结构图有细微的区别,那就是参数化得工厂,而且从业务意义上也有些不同,但是思想是一样的。
我们来看下具体的代码:
- //抽象产品
- public interface Runnable {
- public abstract void run();
- }
- //抽象工厂
- public interface ThreadFactory {
- Thread newThread(Runnable r);
- }
下面是具体的实现:
比如AsyncTask类中工厂的具体实现如下:
- //工厂实现类
- private static final ThreadFactory sThreadFactory = new ThreadFactory() {
- private final AtomicInteger mCount = new AtomicInteger(1);
- public Thread newThread(Runnable r) {
- return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
- }
- };
- //那么产品类在哪里呢?
- //做为参数Runnable r,我们可以创建千千万万个此系列的产品类
- //同理,我们可以创建另外类似的工厂,生产某种专门的线程,非常容易扩展
看到这里,我们一方面为它的生产便利性感叹,一方面又为没创建某类产品都要创建一个工厂而感到繁琐,所以我们下面介绍简单工厂,它的结构图如下:
简单工厂把抽象工厂去掉了,你就创建一个专门生产某类产品就好。在一些特定而又不负责的领域非常实用方便套用这个模式。
在android中的Connection类中使用到了这个类:
其中Connection这个抽象类,既充当抽象产品类,也充当具体工厂类。
因为这种情况下,我们往往需要的是马上生产子类,getConnection方法往往是静态的,所以简单工厂,也叫静态工厂方法。
我们看看代码如下:
- abstract class Connection{
- static Connection getConnection(
- Context context, HttpHost host, HttpHost proxy,
- RequestFeeder requestFeeder) {
- if (host.getSchemeName().equals("http")) {
- return new HttpConnection(context, host, requestFeeder);
- }
- // Otherwise, default to https
- return new HttpsConnection(context, host, proxy, requestFeeder);
- }
- }
这就是简单工厂,一个很简单的参数化工厂,真的很简单。
3.效果
1.创建型模式;
2.参数化工厂方法模式得到相应的对象;
3.为子类提供挂钩;
4.连接平行的类层次。
出自:http://mobile.51cto.com/ahot-418979.htm
相关推荐
### Java和Android源码设计模式解析 #### 前言:设计模式的重要性 设计模式是软件工程中的一个重要概念,它代表了一种最佳实践,能够帮助开发者解决常见的编程问题。掌握设计模式不仅能够提升代码的质量,还能提高...
在实际项目中,我们还可以结合其他设计模式,如单例模式(用于管理全局策略)和工厂模式(用于创建策略对象),进一步提升代码的结构和质量。总之,策略模式是Android应用开发中一个强大的工具,值得开发者深入理解...
Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...
抽象工厂模式是软件设计模式中的一种,属于创建型模式,它的主要目的是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在Java编程中,这个模式经常被用来实现跨平台或者不同品牌产品的一致性...
详细讲解了组合模式、观察者模式、单例模式、模板方法模式、备忘录模式、享元模式、命令模式、工厂方法模式、适配器模式 原型模式等10个Android设计模式,和CSDN上其他讲Android设计模式的文章完全不同。讲解详细,...
在Android开发中,设计模式是提升代码质量和可维护性的重要工具。设计模式是对软件设计中常见问题的解决方案的模板,经过时间和实践的检验,能够帮助开发者有效地解决复杂性问题,提高代码的重用性和可扩展性。本...
"android设计模式"这一主题,主要涵盖了一些常见的设计原则、模式以及如何在Android环境中应用它们。《设计模式之禅》作为一本经典著作,其深入浅出的讲解方式使得读者能够轻松掌握设计模式的核心理念。 1. **设计...
"Android设计模式"这个主题涵盖了多种在Android系统源码以及应用程序开发中常用的设计模式。这些模式是解决常见编程问题的成熟方案,通过理解和应用它们,可以显著提高代码质量。 设计模式分为三大类:创建型模式、...
### Android设计模式概述 #### 设计模式定义 设计模式是软件工程领域的一个重要概念,它代表着在特定场景下解决常见问题的有效方法。对于Android开发者而言,了解并掌握这些设计模式能够帮助他们编写更加高效、可...
工厂方法模式是面向对象设计模式的一种,主要用于解决对象创建的问题。在Android开发中,它被广泛应用,尤其是在需要根据条件或动态地创建不同类型的对象时。本文将深入探讨工厂方法模式的概念、结构、目的以及在...
在"android 设计模式之Listview不同类型Item利用工厂模式的复用"这一主题中,我们主要探讨如何应用工厂模式来解决ListView中多类型Item的问题。首先,我们需要定义一个接口或抽象类,如`BaseItem`,它包含了所有Item...
### Java和Android源码设计模式 #### 前言:迈向精通之路——设计模式的重要性 在软件开发领域,设计模式被视为提升代码质量和可维护性的关键工具。本文将深入探讨Java和Android开发中常用的设计模式,并结合实际...
总的来说,《Android源码设计模式解析与实战》是一本深入浅出的Android设计模式教程,对于希望提升Android开发技能的工程师来说,是一份不可多得的学习资料。通过对书中的知识点进行深入学习和实践,开发者将能更好...
策略模式在Android开发中是一种非常重要的设计模式,它允许程序在运行时动态选择执行的算法或策略,从而提高代码的灵活性和可扩展性。在Android SDK源码中,策略模式被广泛应用于各种场景,比如动画的实现就是一个...
2. **工厂模式** (Factory): Android中的`LayoutInflater`就是一个工厂模式的例子,它根据XML布局文件创建视图对象。通过调用`inflate()`方法,我们可以动态地生成UI组件。 3. **观察者模式** (Observer): `...
根据提供的文件信息,我们可以推断出这是一本关于Android源码设计模式的书籍,并提供了PDF版本的下载链接。下面将围绕这本书籍所涉及的核心知识点进行详细的解析与介绍。 ### 设计模式简介 设计模式是在软件工程...
4. **抽象工厂模式(Abstract Factory)**:当需要为一系列相关或相互依赖的对象提供接口时,抽象工厂模式可以创建一系列相关的工厂。在Android中,如创建不同平台(Android,iOS)的UI组件。 5. **策略模式(Strategy...
在Android开发中,设计模式和设计原则是提升代码质量、可维护性和可扩展性的重要工具。以下是关于"Android 24种设计模式介绍与6大设计原则"的详细阐述: 一、六大设计原则 1. **单一职责原则(Single ...