`
切切歆语
  • 浏览: 31011 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

Android设计模式之工厂模式

 
阅读更多

定义

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例 对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩 展性和尽量少的修改量。

个人理解:工厂模式就等于生产产品,工厂模式实例化对象,当你需要实例化一个对象,你发现不止一个选择(所有供选择的类都实现了同一个接口)的时候,针对这一情况写一个通用的方法(方法返回类型是那个共用的接口),这就是工厂模式了。

案例讲解:以两个工厂造车类和所有工厂操作类来实现工厂模式


宝马类


public class Bmw implements Volkswagen {
    
     public static final int ID = 1;
    @Override
    public void drive() {
        // TODO Auto-generated method stub
        System.out.println("宝马造车成功啦");  
    }

    @Override
    public String getName() {
        // TODO Auto-generated method stub
        return "宝马";
    }

}

奔驰类
public class Benz implements Volkswagen {
    public static final int ID = 0;
    
    @Override
    public void drive() {
        // TODO Auto-generated method stub
        System.out.println("奔驰造车成功了");  

    }

    @Override
    public String getName() {
        // TODO Auto-generated method stub
        return "奔驰";
    }

}

Volkswagen.Java

/***
 * 产品操作
 * @author zq
 *
 */
public interface Volkswagen {

    void drive();
    
    String getName();
}

工厂类

/***
 * 工厂类
 * @author zq
 *
 */
public class VehicleVolkswagenFactory {
    
    
    public Volkswagen createVolkswagen(int id)
    {
        Volkswagen volkswagen=null;
        switch (id) {
        case Benz.ID:
            volkswagen=new Benz();
            break;
        case Bmw.ID:
            volkswagen=new Bmw();
            break;

        default:
            break;
        }
        return volkswagen;
    }
       //反射得到
    public Volkswagen createVolkswagen(Class <? extends Volkswagen> clazz){
        Volkswagen volkswagen = null;
        try {
            volkswagen = clazz.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return volkswagen;
    }

}

Activity.Java

public class VehicleActivity extends Activity
{
    TextView tv_benz,tv_bmx;
        VehicleVolkswagenFactory factory;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vehicle_activity);
        factory = new VehicleVolkswagenFactory();
        initViewBenz();
        initViewBmw();
    }
    private void initViewBenz() {
        // TODO Auto-generated method stub
         tv_benz=(TextView) findViewById(R.id.tv_benz);
         Volkswagen volkswagen=factory.createVolkswagen(Benz.ID);
         tv_benz.setText(volkswagen.getName());
         volkswagen.drive();//工厂相关方法
        
    }
    private void initViewBmw() {
        // TODO Auto-generated method stub
        tv_bmx=(TextView) findViewById(R.id.tv_bmx);
        Volkswagen volkswagen=factory.createVolkswagen(Bmw.class);
        tv_bmx.setText("反射得到"+volkswagen.getName());
        
    }
    
}

优点
工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定 的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而 不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。


缺点
由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;


分享到:
评论

相关推荐

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

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

    android常用设计模式

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

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

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

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

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

    android设计模式

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

    Android之大话设计模式——:抽象工厂模式借鉴.pdf

    Android之大话设计模式——:抽象工厂模式借鉴.pdf

    Android设计模式

    下面将详细探讨Android设计模式中的关键知识点。 1. 单例模式(Singleton):在Android中,单例模式用于确保一个类只有一个实例,并提供全局访问点。例如,Android系统的应用上下文(Context)就是通过单例模式管理的...

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

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

    Android-23种设计模式

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

    Android源码设计模式

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

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

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

    Android计算器(简单工厂模式)

    **Android计算器(简单工厂模式)** 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这个模式中,一个单独的类(被称为工厂)负责创建对象,客户端通过调用工厂方法来获取所需的对象,而无需...

    设计模式在android中的应用之1,简单工厂模式

    简单工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象的最佳方式。在Android开发中,尤其是在处理各种视图组件或者不同类型的数据库操作时,简单工厂模式能够简化代码,提高代码的可读性和可维护性...

    Android源码设计模式解析与实战

    《Android源码设计模式解析与实战》是一本深入探讨Android系统源码中设计模式应用的专业书籍,适合已经有一定Android开发基础并希望进一步提升技术能力的开发者阅读。这本书旨在通过实例解析,帮助读者理解并掌握...

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

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

    android 工厂模式源代码

    工厂模式是Android设备制造商为了检测硬件性能和功能而设计的一种特殊用户界面。它通常隐藏在常规用户界面之外,只有通过特定的快捷键组合或特殊指令才能进入。在工厂模式下,可以执行一系列的硬件测试,包括但不...

    Android源码设计模式解析与实战.pdf

    《Android源码设计模式解析与实战》这本书主要探讨了在Android开发过程中如何运用经典的设计模式来提高代码质量、可维护性和扩展性。本书不仅详细分析了Android系统内部使用的各种设计模式,还通过实战案例帮助读者...

    android框架设计模式和设计原则

    在Android开发领域,深入理解框架设计模式和设计原则是提升专业技能的关键步骤。设计模式是软件工程中的经验总结,它们是解决常见问题的有效方案。设计原则则是指导我们编写高质量、可维护代码的准则。以下是对这些...

Global site tag (gtag.js) - Google Analytics