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

工厂模式(工厂方法)

阅读更多

简单工厂的缺点就是扩展性不强,当有新的类型产生的时候,将对负责生产的主类进行修改。主类负责太多的业务逻辑,要避免这种情况的产生,就是将生产类功能抽象化。还是以上文中的水果为例子:

水果接口:

package 工厂模式.工厂方法;

public interface Fruit {

 void grow();
 void harvest();
 void plant();
}

苹果:

package 工厂模式.工厂方法;

public class Apple implements Fruit {

 public void grow() {
  System.out.println("apple grow");

 }

 public void harvest() {
  System.out.println("apple harvest");

 }

 public void plant() {
  System.out.println("apple plant");

 }

}
香蕉:

package 工厂模式.工厂方法;

public class Banana implements Fruit {

 public void grow() {
  System.out.println("Banana grow");

 }

 public void harvest() {
  System.out.println("Banana harvest");

 }

 public void plant() {
  System.out.println("Banana plant");
 }

}
生产工厂(农夫)

package 工厂模式.工厂方法;

public interface FruitGardener {
 
 public  Fruit factory();


}
这个类和简单工厂的农夫类有很大的不同,区别就在这个类将生产的功能抽象化了,继而产生的是生产各种水果的工厂,例如生产苹果,不由农夫生产了,而是由农夫生产苹果共产,由苹果工厂去生产苹果。这种做法的扩展性非常的强。

苹果工厂:

package 工厂模式.工厂方法;

public class AppleGardener implements FruitGardener {

 public Fruit factory() {
  // TODO Auto-generated method stub
  return new Apple();
 }

}
香蕉工厂:

package 工厂模式.工厂方法;

public class BananaGardener implements FruitGardener {

 public Fruit factory() {
  // TODO Auto-generated method stub
  return new Banana();
 }

}

客户端:

package 工厂模式.工厂方法;

public class Client {

 public static void main(String[] args) {
  FruitGardener applegardener = new AppleGardener();
  Apple apple = (Apple) applegardener.factory();
  apple.plant();

 }

}

工厂方法灵活运用了继承的原理,通过客户要生产什么类型的水果,从而去拿具体生产水果的实例工厂。如果系统需要加入一个新的产品,那么所需要的就是向系统中加入一个这个产品的对应的工厂类,没必要去修改客户端。完全支持开闭原则。

 

分享到:
评论

相关推荐

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

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

    JAVA工厂模式工厂方法模式.pdf

    JAVA工厂模式工厂方法模式.pdf

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

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    JAVA工厂模式工厂方法模式[整理].pdf

    JAVA工厂模式工厂方法模式[整理].pdf

    工厂方法模式和抽象工厂模式的区别

    工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...

    工厂方法模式uml类图

    java设计模式 工厂方法模式uml类图,一张图就让你秒懂工厂方法模式

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...

    设计模式-工厂方法模式

    工厂方法模式作为创建型模式中的一种,提供了一种创建对象的优雅方式,它不仅使对象的创建与使用分离,还极大地提高了系统的扩展性和灵活性。本文将深入探讨工厂方法模式的内部机制,以及通过反射和配置文件技术增强...

    深入了解工厂模式&工厂方法&抽象工厂

    工厂模式分为三种主要形态:简单工厂模式、工厂方法模式和抽象工厂模式。 1. 简单工厂模式:也称为静态工厂方法模式,它通过一个静态方法来创建对象。在这个例子中,`FruitGardener` 类就是简单工厂,它根据输入的...

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

    本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...

    工厂方法模式和抽象工厂模式

    在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...

    Java 工厂模式 抽象工厂 工厂方法模式

    本文将深入探讨Java中的工厂模式,包括基本的工厂模式、抽象工厂模式以及工厂方法模式。 **工厂模式**:工厂模式的核心思想是提供一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。这样,客户端无需...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    工厂方法模式的C语言实现

    工厂方法模式是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,当我们创建对象时,不会直接实例化具体的产品类,而是通过一个工厂类来创建。这样做的好处是,当需要添加新的产品...

    java工厂方法模式

    同时,工厂方法模式也可以避免简单工厂模式的缺点,即当有新产品要加入到系统中时,必须对工厂类进行修改,以加入必要的处理逻辑。 工厂方法模式适合在如下场合中运用: * 当无法得知必须创建的对象属于哪个类的...

    工厂方法模式源文件

    工厂方法模式是面向对象设计模式中的行为模式,它属于创建型模式的一种,主要解决的是当一个类不知道它所必须创建的对象的类的时候,或者当一个类希望由它的子类来决定实例化哪个类的时候,如何封装这个实例化过程的...

    设计模式——工厂方法模式

    工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。让我们一一探讨这些模式。 1. 简单工厂模式: 简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。...

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

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

    简单工厂-工厂方法-抽象工厂 对比总结

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

Global site tag (gtag.js) - Google Analytics