`

工厂模式:Factory

 
阅读更多

工厂模式是用来生成对象的。假如我们有一个Product类,如果要创建一个实例就new Product();但是如果这个类有几个子类,创建子类对象new ProductA();new ProductB();这样需要每个子类都创建一个对象很是麻烦,而且还要修改以前的代码。这样我们可以把Product类抽象成一个接口。

class ProductA implements Product
{
//添加方法的实现
}
class ProductB implements Product
{
//添加方法的实现
}
Class Factory
{
public static Product create(String className)
{
Return Class.forName(className).newInstance();
}
}

 如果className为”com.jeedroid.ProductA”的话那么就返回了ProductA的实例。所以使用工厂模式需要定义一个接口,还有对该接口的实现,还要有一个Factory来生产实例。
如果我们还有一个Product2接口,那么我们产生Product2A和Product2B的话,又要写一个Factory来产生实例,那么我们能不能在一个Factory里面实现同时创建Product和Product2的实现的实例呢?这就用到了抽象工厂。
抽象工厂(Abstract Factory)和上面的工厂方法(Factory Method)的不同点就在于创建对象的复杂度。举个例子:
假如有两个电脑生产商LenovoFactory(工厂)和AcerFactory(工厂),每个工厂都有 createPC(),createMouse()这两个方法用来生成PC和Mouse,,Abstract Factory为这个产品提供一个统一的创建接口来创建一系列的产品

 

public abstract class Factory
{
public abstract PC create();
Public abstract Mouse create2();
}
public class LenovoFactory extends Factory
{
public PC create()
{
Return new LenovoPC();
}
public Mouse create2()
{
return new LenovoMouse();
}
}

public class AcerFactory extends Factory
{
public PC create()
{
Return new AcerPC();
}
public Mouse create2()
{
Return new AcerMouse();
}
}
 
分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括以上提到的三种模式。 通过学习和理解这三种工厂模式,开发者可以更好地组织代码,降低模块间的耦合,提高软件的可维护性和可扩展性。在实际开发...

    工厂模式FactoryMode

    工厂模式是一种常用的面向对象设计模式,它属于创建型设计模式,旨在提供一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个专门的工厂对象来完成这个任务。这样...

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel

    Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

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

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

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式)

    简单工厂模式中,创建对象的逻辑集中在单个工厂类中,而工厂方法模式则将创建对象的责任分散到多个子类中,使得系统更易于维护和扩展。 总的来说,工厂方法模式在C#中的应用广泛,尤其是在需要灵活地创建不同类型...

    工厂方法模式(FactoryMethod)

    工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建对象,而具体的创建过程被延迟到了子类中,使得子类可以在不修改原有代码的基础上决定...

    qt工厂模式例子qt简单工程模式源码

    参考如下博客,亲自实践了一个QT的工厂模式,亲测可用,编译运行实测。 我用qt5.6,在windows下编译并运行测试,正常。 https://blog.csdn.net/baidu_33570760/article/details/71159808 1. Qt工厂模式源码 2. C++...

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

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

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    Java设计模式之工厂模式(Factory)

    1. **简单工厂模式(Simple Factory)**:适用于需求较为简单的情况,主要负责创建一系列相关的对象。 2. **工厂方法模式(Factory Method)**:用于处理不同类型的对象创建过程,提供了一种接口来创建一系列相关或...

    设计模式(c++) 之 Factory(工厂模式)源码下载

    在压缩包中的"Factory"文件夹可能包含了这些工厂模式的C++实现。"Debug"文件夹可能包含了编译后的可执行文件或者调试信息。通过查看源码,我们可以学习到如何在C++中实现工厂模式的各个变体,包括类的组织结构、接口...

    抽象工厂模式abstractFactory

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建对象集合的接口,而无需指定具体的产品类型。这种模式适用于当系统需要在不同平台或环境中创建一组相关或相互依赖的对象时,而这些...

    uml 文档 简单工厂模式

    UML文档-简单工厂模式 简单工厂模式是一种专门负责将大量有共同接口的类实例化的模式,而不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。 简单工厂模式的...

    java工厂模式SimpleFactory

    在Java中,SimpleFactory(简单工厂)是最基础的工厂模式实现,通常用于创建对象的过程相对简单且固定的情况。它的核心思想是封装对象的创建过程,让客户端避免直接实例化对象,而是通过工厂类来完成。这样做的好处...

    工厂模式(Factory)

    1. **简单工厂模式(Simple Factory Pattern)**:由一个静态方法来创建产品对象,它是最简单的工厂模式形式,但不利于扩展,因为静态方法不能被继承。 2. **工厂方法模式(Factory Method Pattern)**:定义一个...

    设计模式之Factory

    简单工厂模式适用于产品种类较少且不经常变动的情况,但它违反了"开闭原则",即对扩展开放,对修改关闭。 2. **工厂方法**:工厂方法模式将具体产品的创建延迟到子类中,定义一个创建对象的接口,但由子类决定要...

    走进设计模式之抽象工厂(Abstract Factory)

    1. **模式结构**:抽象工厂模式通常包括抽象工厂接口(AbstractFactory),具体工厂类(ConcreteFactory),抽象产品接口(Product)以及具体产品类(ConcreteProduct)。抽象工厂定义了创建产品的方法,而具体工厂...

    工厂模式(工厂方法)

    工厂模式是一种常用的软件设计模式,它是创建型设计模式的一种,主要解决对象创建的问题。在工厂模式中,我们定义一个用于创建对象的接口,让子类决定实例化哪一个类。这样,工厂方法就把类的实例化推迟到了子类,...

Global site tag (gtag.js) - Google Analytics