工厂方法模式

来源:互联网 发布:淘宝客服图片素材 编辑:程序博客网 时间:2024/05/29 04:26

1,什么是工厂方法模式?


定义如下:定义了一个创建对象的接口,但是由子类决定实例化的类是那个。工厂方法让类的实例化推迟到了子类


工厂模式是将使用对象与获取对象解耦,这样就不用将类似new这样的代码硬编码到客户端上。


2,工厂方法一般类图


当客户端需要某个Product,可以利用Factory类的newInstance方法来创建,这样就不用将类似new Train这样代码硬编码到客户端的代码中


3,上面类图实现

Product接口

package com.yy;public interface Product {public void play();}

火车玩具类

package com.yy;public class Train implements Product {@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("play train...");}}
飞机玩具类

package com.yy;public class AirPlane implements Product{@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("play airplane...");}}

工厂接口

package com.yy;public interface Factory {public Product newInstance();}
火车工厂类

package com.yy;public class TrainFactory implements Factory {@Overridepublic Product newInstance() {// TODO Auto-generated method stubreturn new Train();}}

飞机玩具工厂类

package com.yy;public class AirPlaneFactory implements Factory {@Overridepublic Product newInstance() {// TODO Auto-generated method stubreturn new AirPlane();}}


测试类

package com.yy;import static org.junit.Assert.*;public class Test {@org.junit.Testpublic void test() {//需要一个火车玩具Product train = getProduct(new TrainFactory());train.play();//需要一个飞机玩具Product airplane = getProduct(new AirPlaneFactory());airplane.play();}public Product getProduct(Factory factory){return factory.newInstance();}}

测试结果

play train...play airplane...






0 0