Java工厂方法模式

工厂方法模式:

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

 1 /**
 2  * 抽象产品,交通工具接口
 3  * @ClassName: TrafficTool
 4  * @author BlueLake
 5  * @date 2014年9月10日 下午4:42:10
 6  */
 7 public interface TrafficTool {
 8     //去上班的抽象方法
 9     public void gotoWork();
10 }
 1 /**
 2  * 抽象工厂:交通工具工厂
 3  * @ClassName: TrafficFactory
 4  * @author BlueLake
 5  * @date 2014年9月10日 下午4:43:53
 6  */
 7 public interface TrafficFactory {
 8     //创建交通工具的抽象方法
 9     public TrafficTool getTool();
10
11 }
1 package demo.mode.factory;
2 //具体产品:自行车
3 public class Bike implements TrafficTool{
4     //具体上班方法
5     public void gotoWork(){
6         System.out.println("骑自行车去上班-bike-");
7     }
8
9 }
1 package demo.mode.factory;
2 //具体工厂:自行车工厂
3 public class BikeFactory implements TrafficFactory{
4     //生成自行车对象
5     public TrafficTool getTool(){
6         return new Bike();
7     }
8
9 }
1 package demo.mode.factory;
2 //具体产品:公交车
3 public class Bus implements TrafficTool{
4     //具体上班方法
5     public void gotoWork() {
6         System.out.println("坐公交车上班---bus---");
7     }
8
9 }
1 package demo.mode.factory;
2 //具体工厂:公交车
3 public class BusFactory implements TrafficFactory{
4     //生成公交车
5     public TrafficTool getTool() {
6         return new Bus();
7     }
8 }

测试:

 1 package demo.mode.factory;
 2
 3 public class FactoryTest {
 4 /**
 5  * 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口,
 6  *             而子类工厂负责创建具体的产品对象。
 7  * 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象。
 8  *
 9  * 工厂方法模式包含四个部分:
10  * 1.抽象产品:            产品对象的基类,或者是同一的接口。
11  * 2.具体的子类产品:各个不同的实例对象类。
12  * 3.抽象工厂:            所有子类工厂的基类,或同一接口。
13  * 4.具体的工厂子类:负责每个产品对象的具体创建。
14  */
15     public static void main(String[] args){
16         //定义公共的变量,工厂接口
17         TrafficFactory fac = null;
18         TrafficTool tool = null;
19
20         //具体调用时,只需要调用不同的工厂就可以实现不用的操作。
21         fac = new BikeFactory();
22         tool = fac.getTool();
23         tool.gotoWork();//骑自行车去上班-bike-
24
25         fac = new BusFactory();
26         tool = fac.getTool();
27         tool.gotoWork();//坐公交车上班---bus---
28     }
29 }

工厂方法模式,到此就学会了。

简单吧!

时间: 2024-11-06 13:35:02

Java工厂方法模式的相关文章

java 工厂方法模式简单实例

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

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

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

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设计模式之工厂模式(简单工厂模式+工厂方法模式)

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

【java】 java 设计模式(1):工厂方法模式(Factory Method)

工厂方法模式分为三种: 1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建.首先看下关系图: 举例如下:(我们举一个发送邮件和短信的例子) 首先,创建二者的共同接口:   public interface Sender { public void send(); } 其次,创建实现类: public class MailSender implements Sender { @Override public void send() { System.out.println

Java设计模式3:工厂方法模式

工厂方法模式 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中. 工厂方法模式 工厂方法模式是对简单工厂模式进一步抽象的结果. 假如是不使用反射的工厂方法模式,那么所有的if... else if...else都放在工厂类中,势必造成工厂类的无限臃肿 这时候就需要工厂方法模式来处理这个问题了.工厂方法模式中,核心的工厂类不再负责所有对象的创建,而是将具体的创建工作交给子类去做.这个类则摇身一变变成了一个抽象工厂角色,仅仅负责给出具体工厂子

《JAVA与模式》之工厂方法模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式. 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中. 那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明: 相信很多人都做过导入导出功能,就拿导出功能来说.有这么一个需求:XX系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式

JAVA设计模式--工厂方法模式

工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关的代码.由应用程序调用以创建对应的具体产品的对象.在java中它由具体的类来实现.抽象产品角色:它是具体产品继承的父类或者是实现的接口.在java中一般有抽象类或者接口来实现.具体产品角色:具体工厂角色所创建的对象就是此角色的实例.在java中由具体的类来实现. 下面以IE,火狐,谷歌浏览器为模型做

Java设计模式之工厂方法模式

工厂方法模式介绍 有时候,由于产品的多样化,但是产品的功能却有某种共同的联系.我们希望定义一个用于创建产品对象的公共接口,让子类决定去如何实现这个功能.然后,我们定义一个生产产品的"工厂",所有的产品将从这个工厂里面生产出来,这样我们就使得产品的构造的细节与工厂分离了,这样产品的实现细节就被封装起来了,并且产品的可扩展性也很强.那么,这种设计模式我们称为工厂方法模式.具体的实例有很多,比如说去年的某一阵子脸萌软件爆红,其中就运用到了工厂方法模式来给用户生产各种脸型. 工厂方法模式分类