JAVA设计模式之工厂模式

以下代码仅供展示工厂模式,不能直接编译,因为一个文件中最多只能有一个public class。

一、简单工厂模式:比较简单,produceProduct方法最好是静态的。它是根据参数来决定返回哪一种类型的product。

 1 public interface Product
 2 {
 3     public void getName();
 4 }
 5
 6 public class ProductA implements Product
 7 {
 8     public void getName()
 9     {
10         System.out.println("I am A.");
11     }
12 }
13
14 public class ProductB implements Product
15 {
16     public void getName()
17     {
18         System.out.println("I am B.");
19     }
20 }
21
22 public class Factory
23 {
24     public Product produceProduct(String type)
25     {
26         if(type.equals("A"))
27         {
28             return new ProductA();
29         }
30         else if(type.equals("B"))
31         {
32             return new ProductB();
33         }
34         else
35         {
36             return null;
37         }
38     }
39
40     public static void main(String[] args)
41     {
42         Factory factory = new Factory();
43         Product product = factory.produceProduct("A");
44         product.getName();
45         product = factory.produceProduct("B");
46         product.getName();
47     }
48 }

二、工厂方法模式:不同于简单工厂,它将不同的产品放在实现了工厂接口的不同工厂类中,这样就算其中一个工厂出了问题,其他工厂也还可以正常工作。

 1 public interface Product
 2 {
 3     public void getName();
 4 }
 5
 6 public class ProductA implements Product
 7 {
 8     public void getName()
 9     {
10         System.out.println("I am A.");
11     }
12 }
13
14 public class ProductB implements Product
15 {
16     public void getName()
17     {
18         System.out.println("I am B.");
19     }
20 }
21
22 public interface Produce
23 {
24     public Product produce();
25 }
26
27 public class FactoryA implements Produce
28 {
29     public Product produce()
30     {
31         return new ProductA();
32     }
33 }
34
35 public class FactoryB implements Produce
36 {
37     public Product produce()
38     {
39         return new ProductB();
40     }
41 }
42
43 public class Test
44 {
45     public static void main(String[] args)
46     {
47         FactoryA fa = new FactoryA();
48         Product p = fa.produce();
49         p.getName();
50         FactoryB fb = new FactoryB();
51         p =    fb.produce();
52         p.getName();
53     }
54 }

三、抽象工厂模式:用于创建一系列产品

 1 public interface Fruit
 2 {
 3     public void getFruit();
 4 }
 5
 6 public class FruitA implements Fruit
 7 {
 8     public void getFruit()
 9     {
10         System.out.println("FruitA");
11     }
12 }
13
14 public class FruitB implements Fruit
15 {
16     public void getFruit()
17     {
18         System.out.println("FruitB");
19     }
20 }
21
22 public interface Vegetable
23 {
24     public void getVegetable();
25 }
26
27 public class VegetableA implements Vegetable
28 {
29     public void getVegetable()
30     {
31         System.out.println("VegetableA");
32     }
33 }
34
35 public class VegetableB implements Vegetable
36 {
37     public void getVegetable()
38     {
39         System.out.println("VegetableB");
40     }
41 }
42
43 public interface AbstractFactory
44 {
45     public Fruit produceFruit();
46     public Vegetable produceVegetable();
47 }
48
49 public class FactoryA implements AbstractFactory
50 {
51     public Fruit produceFruit()
52     {
53         return new FruitA();
54     }
55
56     public Vegetable produceVegetable()
57     {
58         return new VegetableA();
59     }
60 }
61
62 public class FactoryB implements AbstractFactory
63 {
64     public Fruit produceFruit()
65     {
66         return new FruitB();
67     }
68
69     public Vegetable produceVegetable()
70     {
71         return new VegetableB();
72     }
73 }

说明:也可以有FactoryAB是return new FruitA()和return new VegetableB()的,或者是FactoryBA是return new FruitB()和return new VegetableA()的。其目的在于创建一系列产品。

时间: 2024-10-14 22:57:01

JAVA设计模式之工厂模式的相关文章

浅析JAVA设计模式之工厂模式(一)

1 工厂模式简介 工厂模式的定义:简单地说,用来实例化对象,代替new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式可以动态决定将哪一个类实例化,不用先知道每次要实例化哪一个类. 工厂模式可以分一下三种形态: 简单工厂 (Simple Factory)模式:又称静态工厂模式(StaticFactory). 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory). 抽象工厂 (Abstract Factroy)模式:又称工具箱模式

浅析JAVA设计模式之工厂模式(二)

1 工厂方法模式简介 工厂方法 (Factroy Method) 模式:又称多态性工厂模式(Polymorphic Factory),在这种模式中,核心工厂不再是一个具体的类,而是一个抽象工厂,提供具体工厂实现的接口,具体创建产品交由子工厂去做,抽象工厂不涉及任何产品被实例化的细节.而不同等级的产品,就对应一个不同等级的工厂,如下图. 图1 1.1工厂方法模式(多态性工厂模式): 工厂方法模式有三个角色: 1. 抽象产品接口 2. 具体产品类 3. 抽象工厂接口 4.具体工厂类. 1.2工厂方法

浅析JAVA设计模式之工厂模式(三)

在阅读本文之前,请先阅读(一)和(二)中的简单工厂模式和工厂方法模式. 1抽象工厂模式简介 抽象工厂 (Abstract Factroy) 模式:工具箱模式(kit).抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态,如下图. 图1.1 上图左边有一个工厂类的等级结构,右边有两个不同的产品等级结构,分别是产品A的等级结构和产品B的等级结构,工厂1和工厂2分别负责不同一个产品等级,同一个产品族的产品的生产.又例如下图: 图1.2 上图表示的是Button和Text两个不同产品的等级

Java设计模式之工厂模式(Factory模式)介绍(转载)

原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工厂.Java工厂模式举例等内容,需要的朋友可以参考下 工厂模式定义:提供创建对象的接口. 为何使用工厂模式 工厂模式是我们最常用的模式了,著名的Jive论坛,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见. 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对象的建立就是一个 "过程",不仅是一个操作,像一部大机器中的一个齿轮传动. 模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实

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

抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关的代码.由应用程序调用以创建对应的具体产品的对象.在java中它由具体的类来实现.抽象产品角色:它是具体产品继承的父类或者是实现的接口.在java中一般

Java设计模式:工厂模式

问题提出 Java的工厂模式与现实生活中的工厂的模型是很相似的.工厂是用来做什么?当然是用来生成产品.因此在Java的工厂模式的关键点就是如何描述好产品和工厂这2个角色之间的关系. 下面来仔细描述一下不同的关系以及对应的设计模式 1)单一产品系,工厂只生产一种类型的产品 让我们简单构思一下简单的工厂生产模型,既然只有一个产品,那只需要一个车间就好了,一个车间分别生产三种不同种类的小汽车.好,下面看看简单工厂的设计模式. //定义小汽车接口:ICar.javapublic interface IC

由解耦引发出的 Java设计模式之工厂模式

一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method):又称为多形性工厂: 3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品: 这三种模式从上到下逐步抽象,并且更具一般性. GOF在<设计模式>一书中将工厂模式分为两类:工

Java设计模式之工厂模式2

一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method):又称为多形性工厂: 3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品:             这三种模式从上到下逐步抽象,并且更具一般性.             GOF在<

JAVA 设计模式 简单工厂模式

用途 简单工厂模式 (Simple Factory) 又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例. 简单工厂模式是一种对象创建型模式 (可参考 设计模式 创建型模式). 但是简单工厂模式不属于23种Gof设计模式之一. 结构 如何实现一个具有加减乘除基本功能的计算器? 对于这四种运算来说,都需要两个操作数,差别仅在于返回的结果不同. 由此,我们可以抽象化它们的共性,提炼出一个父类.这个类中包含