java 工厂方法模式简单实例

工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象。

目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象。

工厂方法模式包含四个部分:

1.抽象产品:产品对象同一的基类,或者是同一的接口。

2.具体的产品:各个不同的实例对象类

3.抽象工厂:所有的子类工厂类的基类,或是同一的接口

4.具体的工厂子类:负责每个不同的产品对象的实际创建

具体的实例代码:

1.抽象的产品类:定义car  交通工具类下:

package factory.simple;

/**
 * 抽象产品角色 交通工具接口
 *
 * @author lilin
 *
 */
public interface Car {

    /**
     * 上班函数
     */
    void gotowork();

}

2.定义实际的产品类,总共定义两个,bike 和bus 分别表示不同的交通工具类

package factory.simple;

/**
 * 具体产品角色,自行车
 *
 * @author lilin
 *
 */
public class Bike implements Car {
    @Override
    public void gotowork() {
        System.out.println("骑自行车去上班!");
    }

}
package factory.simple;

/**
 * @author lilin
 *
 */
public class Bus implements Car {

    @Override
    public void gotowork() {
        System.out.println("坐公交车去上班!");
    }

}

3.抽象的工厂接口定义如下:、

/**
 *
 */
package factory.factory;

import factory.simple.Car;

/**
 * @author lilin
 *
 */
public interface ICarFactory {

    /**
     * 获取交通工具
     *
     * @return
     */
    Car getCar();

}

4.具体的工厂子类,分别为每个具体的产品类创建不同的工厂子类:

/**
 *
 */
package factory.factory;

import factory.simple.Bike;
import factory.simple.Car;

/**
 * @author lilin
 *
 */
public class BikeFactory implements ICarFactory {

    @Override
    public Car getCar() {
        return new Bike();
    }

}
/**
 *
 */
package factory.factory;

import factory.simple.Bus;
import factory.simple.Car;

/**
 * @author lilin
 *
 */
public class BusFactory implements ICarFactory {

    @Override
    public Car getCar() {
        return new Bus();
    }

}

最后,使用简单的测试类,来验证下 不同的工厂能够产生不同的产品对象:测试类如下:

/**
 *
 */
package factory.factory;

import org.testng.annotations.Test;

import factory.simple.Car;

/**
 * @author lilin
 *
 */
public class TestFactory {

    @Test
    public void test() {
        ICarFactory factory = null;
        // bike
        factory = new BikeFactory();
        Car bike = factory.getCar();
        bike.gotowork();

        // bus
        factory = new BusFactory();
        Car bus = factory.getCar();
        bus.gotowork();
    }

}

打印结果如下:

骑自行车去上班!
坐公交车去上班!

工厂模式,可以理解为:有了很多个工厂方法,自己需要哪一个产品,就调用当前产品的工厂方法,获取相应的具体实例。

时间: 2024-10-27 13:12:48

java 工厂方法模式简单实例的相关文章

Java 工厂方法模式的简单示例

工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象. 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象. 工厂方法模式包含四个部分: 1.抽象产品:产品对象同一的基类,或者是同一的接口. 2.具体的产品:各个不同的实例对象类 3.抽象工厂:所有的子类工厂类的基类,或是同一的接口 4.具体的工厂子类:负责每个不同的产品对象的实际创建 具体代码示例,我们以水果作为演示. 定

Java工厂方法模式

工厂方法模式: /** * 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口, * 而子类工厂负责创建具体的产品对象. * 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象. * * 工厂方法模式包含四个部分: * 1.抽象产品: 产品对象的基类,或者是同一的接口. * 2.具体的子类产品:各个不同的实例对象类. * 3.抽象工厂: 所有子类工厂的基类,或同一接口. * 4.具体的工厂子类:负责每个产品对象的具体创建

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

1.工厂方法模式.定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法是一个类的实例化延迟到其子类. 工厂方法模式类结构图: 实现: <?php //抽象产品类 abstract class AbstractProduct{ //共有的方法 public function common(){ } public abstract function behavior(); } //具体产品类 class ConcreteProduct1 extends AbstractProduct{ p

JAVA工厂方法模式(Factory Method)

1.普通工厂模式 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1-1.建立Sender接口 public interface Sender { public void send();} 1-2 创建实现类实现Sender接口,比如文本与图像以及视频类 文本类 public class TextSender implements Sender { public void send() { System.out.println("this is Textsender!

设计模式- 简单工厂模式、工厂方法模式及其比较

简单工厂模式及实例 前言工大有许多同学是做java的,大家都知道java最大的优点是它的完全OO化和它在多年的发展过程中吸收和总结了许多先进的框架与模式,其中工厂模式就是最常用的模式之一.下面我想将我在学习和实践过程中对工厂模式的认识与了解介绍给大家.由于笔者能力限制,在实践中也没参与过什么大的项目,笔者参与过的项目用到的工厂模式主要是简单工厂模式(Simple Factory)和工厂方法模式(Factory Method),所以笔者在本文主要介绍的是这两种模式.准备知识在OO设计领域,我们知道

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

一.工厂方法模式 简单工厂模式的缺陷就是类的创建太过于依赖工厂,一旦需要进行程序扩展,就必须修改工厂类的代码 这违背了背包原则. 而工厂方法模式针对这一问题进行了改进. public interface Sender { public void send(); } public interface producer { public Sender produce(); } public class MailFactory implements producer{ public Sender pr

(四) 工厂方法模式

转载: http://www.cnblogs.com/zuoxiaolong/p/pattern5.html 本章我们继续讨论新的设计模式,工厂方式模式,在这之前,LZ决定先给出引自其它地方的标准定义以及类图.  定义:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色

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

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

Java设计模式(一) 设计模式初探——简单工厂和工厂方法模式

一.引言 在面向对象的编程中,创建对象是最基本也是最常用的一种操作,合理的对象创建方法对提高代码的复用性和降低模块之间的耦合来说极其重要,而工厂模式就是专门为合理创建对象而提出的.在GoF总结的23种常用的设计模式中,工厂模式就有3种,分别为简单工厂.工厂方法和抽象工厂,本文将结结合简单的例子对面向对象的编程.简单工厂模式和工厂方法模式进行较为详细介绍,并给出完整的代码示例,至于抽象工厂方法,我将在后续的博客中进行详细地介绍. 借助于面向对象编程的封装特性,我们将一个完整事物的不同功能模块封装成