`
lvwenwen
  • 浏览: 963566 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

工厂模式Factory Pattern

阅读更多

文章链接:http://www.iteye.com/topic/26455
简单工厂模式
1. 目的
        工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。
2 . 简单工厂模式的结构

3. 一个简单例子
java 代码
// 产品接口        
public interface Product {  
 
    public void getName();  
 
}  
 
// 具体产品A  
public class ProductA implements Product {  
 
    public void getName() {  
        System.out.println("  I am ProductA  ");  
    }  
 
}  
 
// 具体产品B  
public class ProductB implements Product {  
 
    public void getName() {  
        System.out.println("  I am ProductB  ");  
    }  
 
}  
 
// 工厂类  
public class ProductCreator {  
 
    public Product createProduct(String type) {  
        if (" A ".equals(type)) {  
            return new ProductA();  
        }  
        if (" B ".equals(type)) {  
            return new ProductB();  
        } else 
            return null;  
    }  
 
    public static void main(String[] args) {  
        ProductCreator creator = new ProductCreator();  
        creator.createProduct(" A ").getName();  
        creator.createProduct(" B ").getName();  
    }  

4. 小结工厂模式的适用范围
• 在编码时不能预见需要创建哪一种类的实例。
• 一个类使用它的子类来创建对象。
• 开发人员不希望创建了哪个类的实例以及如何创建实例的信息暴露给外部程序。 

抽象工厂模式
1. 抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。
在抽象工厂模式中,抽象产品可能是一个或多个,从而构成一个或多个产品族。 在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。
2. 抽象工厂模式的结构

3. 一个简单例子
java 代码
//  产品 Plant接口        
public interface Plant {  
}  
 
// 具体产品PlantA,PlantB  
public class PlantA implements Plant {  
 
    public PlantA() {  
        System.out.println(" create PlantA ! ");  
    }  
 
    public void doSomething() {  
        System.out.println("  PlantA do something  ");  
    }  
}  
 
public class PlantB implements Plant {  
    public PlantB() {  
        System.out.println(" create PlantB ! ");  
    }  
 
    public void doSomething() {  
        System.out.println("  PlantB do something  ");  
    }  
}  
 
// 产品 Fruit接口  
public interface Fruit {  
}  
 
// 具体产品FruitA,FruitB  
public class FruitA implements Fruit {  
    public FruitA() {  
        System.out.println(" create FruitA ! ");  
    }  
 
    public void doSomething() {  
        System.out.println("  FruitA do something  ");  
    }  
}  
 
public class FruitB implements Fruit {  
    public FruitB() {  
        System.out.println(" create FruitB ! ");  
    }  
 
    public void doSomething() {  
        System.out.println("  FruitB do something  ");  
    }  
}  
 
// 抽象工厂方法  
public interface AbstractFactory {  
    public Plant createPlant();  
 
    public Fruit createFruit();  
}  
 
// 具体工厂方法  
public class FactoryA implements AbstractFactory {  
    public Plant createPlant() {  
        return new PlantA();  
    }  
 
    public Fruit createFruit() {  
        return new FruitA();  
    }  
}  
 
public class FactoryB implements AbstractFactory {  
    public Plant createPlant() {  
        return new PlantB();  
    }  
 
    public Fruit createFruit() {  
        return new FruitB();  
    }  

4. 小结
在以下情况下,应当考虑使用抽象工厂模式。
  首先,一个系统应当不依赖于产品类实例被创立,组成,和表示的细节。这对于所有形态的工厂模式都是重要的。
  其次,这个系统的产品有多于一个的产品族。
  第三,同属于同一个产品族的产品是设计成在一起使用的。这一约束必须得在系统的设计中体现出来。
  最后,不同的产品以一系列的接口的面貌出现,从而使系统不依赖于接口实现的细节。
  其中第二丶第三个条件是我们选用抽象工厂模式而非其它形态的工厂模式的关键性条件。

 

分享到:
评论

相关推荐

    创建型模式之抽象工厂模式(Abstract Factory Pattern)

    在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象工厂模式就显得尤为重要。 首先,我们来详细解释一下抽象工厂模式的核心概念: 1. 抽象工厂...

    The Factory Pattern(工厂模式)ppt

    工厂模式是一种常用的设计模式,它的主要目的是为了封装对象的创建过程,从而使得代码更加灵活,易于维护和扩展。在Head First设计模式中,工厂模式被用来解决对象创建时的“变化”问题,尤其是在需要根据条件动态...

    Head First 设计模式 (四) 工厂模式(factory pattern) C++实现

    1. **抽象工厂(Abstract Factory)**:这是工厂模式的核心接口,定义了创建产品对象的公共接口。在C++中,通常用抽象类或者纯虚函数接口来表示。 2. **具体工厂(Concrete Factory)**:实现了抽象工厂接口,负责...

    设计模式之“工厂方法模式[Factory Method Pattern]”

    今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...

    创建型模式--工厂模式(Factory Pattern)示范代码

    java 创建型模式--工厂模式(Factory Pattern)示范代码demo,关于工厂模式可以查看我的博客 http://blog.csdn.net/u012930316/article/details/54599580

    通过C#实现抽象工厂模式(Abstract Factory Pattern).rar

    在C#中实现抽象工厂模式(Abstract Factory Pattern)涉及定义一个抽象工厂接口,该接口声明用于创建抽象产品的方法。然后,为每个具体产品族实现一个具体工厂,这些工厂提供创建具体产品的实现。最后,客户端代码...

    通过python实现抽象工厂模式(Abstract Factory Pattern).rar

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建一系列相关或相互依赖对象的接口。这个模式使得客户端代码与具体产品的实现解耦,从而提高了系统的灵活性和...

    抽象工厂模式(Abstract Factory Pattern)

    ### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的简单工厂模式与工厂方法模式。这两种模式主要关注于解决对象创建过程中“new”操作的问题,使得创建...

    设计模式 之 “抽象工厂模式[Abstract Factory Pattern]”

    **抽象工厂模式(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式是当一个系统需要根据不同的平台或者环境来创建一组相关或相互依赖的对象时,...

    通过java实现抽象工厂模式(Abstract Factory Pattern).rar

    在Java中,抽象工厂模式(Abstract Factory Pattern)同样是一种创建型设计模式,它允许在不指定具体类的情况下创建一系列相关或相互依赖的对象。压缩包文件代码是一个简单的Java实现示例,展示了如何使用抽象工厂...

    Simple Factory Pattern.rar【GoF的简单工厂模式(C#源码)】

    简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的不同返回不同的类的实例。 简单工厂模式的实质是由一个工厂类根据传入的参量,动态决定...

    [创建型模式] 设计模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式的关键在于抽象工厂,它定义了一组创建对象的接口,允许子类决定实例化哪一个类。...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...

    创建型模式之工厂方法模式(Factory Method Pattern)

    1. 抽象工厂(Abstract Factory):这是工厂方法模式的核心接口,它声明了一组用于创建产品的公共方法。抽象工厂通常为抽象类或接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,提供具体的产品实例。...

    前端大厂最新面试题-Factory Pattern.docx

    Factory Pattern(工厂模式) 在软件开发中,工厂模式(Factory Pattern)是一种常用的设计模式,用于创建对象的实例,而不暴露创建对象的具体逻辑。工厂模式的主要思想是将对象的创建过程封装起来,使得调用方不...

    Abstract Factory Pattern.docx

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式的主要目的是为了隔离产品对象的创建过程,使得更换产品族或者...

    C# 工厂模式开发示例,详细展示三种工厂模式

    工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来,使代码更具有灵活性和可扩展性。 工厂模式有几种常见的...

    [创建型模式] head first 设计模式之工厂模式(Factory)

    工厂方法(Factory Method)是工厂模式的一种具体实现,它是《Head First 设计模式》这本书中讲解的重点之一。在这个模式中,一个工厂类声明了一个创建对象的抽象方法,但并不实现这个方法。而是由子类决定要实例化...

    DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

    在给定的压缩包文件中,我们重点关注两种经典的设计模式:观察者模式(Observer Pattern)和工厂模式(Factory Pattern),包括简单工厂、工厂方法和抽象工厂。下面将详细介绍这两种模式及其在C++中的应用。 **观察...

    用Java实现23种设计模式

    工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2. 结构型模式 适配器模式(Adapter ...

Global site tag (gtag.js) - Google Analytics