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 }

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

简单吧!

posted @ 2017-09-10 16:57  溪山晴雪  阅读(158)  评论(0编辑  收藏  举报