`
lingyibin
  • 浏览: 196411 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

设计模式--工厂模式

阅读更多

工厂是用来生产一个一个实例的,这模式就因此而得名。

一般产生一个对象的方法是用new,这大家都知道。Demo d = new Demo();

但当很多对象都需要创建是,语句就变得很繁琐:

Demo1 d1 = new Demo1();

Demo2 d2 = new Demo2();

Demo3 d3 = new Demo3();

……

Demon dn = new Demon();

 

这时可以考虑用工厂模式,写一个方法来制造你所需要的对象:

public class Factory{

  public static Demo getInstance(int which){

  //getClass 产生Sample 一般可使用动态类装载装入类。
  if (which==1)
    return new Demo1();
  else if (which==2)
    return new Demo2();

  } //返回的都是Demo的子类

}

 

从网上盗了张图片过来解释这个模式:



 但当要生产的对象比较复杂,比如一个工厂里面生产的某两种对象之间有联系,另外两种对象之间也有联系。上面这种方法就不太好了。

 

这时可以用抽象工厂,举个例子:

public abstract class Factory{

  public abstract Demo create(int which);

  public abstract Demo create2(int which);

}

/**
 * 各种猫和老鼠的制造厂
 * 猫和老鼠都是Demo的子类
 */
public class CatMiceFactory extends Factory{

  public Demo create(int which){ //which 指哪种猫
            if(……)
    .........
    return new Cat_n();
  }

  public Demo create2(int which){
            if(……)
    .........
    return new Mice_n();
  }

}


/**
 * 各种猴子和香蕉的制造厂
 * 猴子和香蕉都是Demo的子类
 */
public class BombFactory extends Factory{

  public Sample create(int which){
            if(……)
    ......
    return new Mokey_n(); 
  }

  public Demo creat2(int which){
            if(……)
    ......
    return new Banana_n();
  }

}
 

如果把这两种工厂混为一谈的话,create方法制造出来的可能是猫,create2方法制造出来的可能是香蕉,但猫不吃香蕉呀,所以这就会产生混乱。这里抽象工厂就起到了比较大的作用。

  • 大小: 40 KB
0
0
分享到:
评论

相关推荐

    java设计模式--工厂模式

    Java设计模式中的工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式的核心思想是将对象的创建过程封装起来,使得创建过程独立于使用过程,从而提高了代码的可扩展性和可维护性。在HeadFirst...

    设计模式--工厂模式java例子

    在这些模式中,工厂模式尤为突出,它是一种创建型设计模式,为对象的创建提供了抽象接口,使得代码无需直接实例化具体类,而是通过工厂方法来创建对象。 在Java编程语言中,工厂模式的应用广泛且实用。它主要分为三...

    创建型设计模式---工厂设计模式实现

    创建型设计模式---工厂设计模式实现

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    c++设计模式-工厂方法模式

    在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...

    JAVA-设计模式-创建型模式-工厂模式

    JAVA-设计模式-创建型模式-工厂模式

    java设计模式----抽象工厂模式

    java设计模式----抽象工厂模式,简单工厂模式代码 代码内部

    NET设计模式--工厂方法例子源码

    NET设计模式--工厂方法例子源码

    设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)

    设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)

    设计模式--抽象工厂模式实现多数据库连接

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建对象族的接口,而无需指定它们的具体类。在.NET开发中,这种模式常用于实现多数据库连接,比如连接到MySQL、SQL Server或Oracle等不同的数据库系统。...

    设计模式-工厂模式

    工厂模式是设计模式中的一个基础且重要的部分,它属于创建型设计模式,主要用于封装对象的创建过程,使得客户端不必关心具体的实现细节,提高了代码的可扩展性和可维护性。 工厂模式主要有三种形式:简单工厂模式、...

    设计模式-工厂方法模式

    工厂方法模式是设计模式中的经典之作,它通过封装创建细节,使得系统的对象创建更加灵活和可扩展。结合反射机制和配置文件的使用,这种模式能够更加动态地适应变化的需求,而无需修改现有的代码结构。在实际开发过程...

    设计模式----工厂模式

    《设计模式——工厂模式》 在软件工程领域,设计模式是一种在特定情境下解决常见问题的模板,它为程序员提供了一种标准的解决方案。工厂模式是面向对象设计中最为人熟知的设计模式之一,属于创建型模式,其主要目标...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    java设计模式-工厂模式

    Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...

    设计模式-工厂模式 Java源码

    工厂模式是设计模式中的一种创建型模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码无需关心具体对象的创建细节,只需通过一个统一的接口来获取所需的对象。 在Java编程语言中,工厂模式通常分为简单...

    C++设计模式-基于QT4开源跨平台开发框架 源码

    2. **工厂模式** - QT4的QObject类及其子类提供了一种动态对象创建的方式,通过`QObject::createObject`或`QMetaObject::newInstance`可以实现工厂模式,这在处理插件或者动态加载类时非常有用。 3. **观察者模式**...

Global site tag (gtag.js) - Google Analytics