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

目录

1、概述

2、代码

3、实际源码应用


 

1、概述

通俗的讲,工厂方法就是你需要什么对象,就new 一个对应的工厂对象,由工厂对象产生你需要的对象。而工厂对象的核心就是一个产生对象的方法。

客户端不需要知道要创建什么对象,只需要知道要创建对象的工厂类,具体的产品对象都由工厂类产生,客户端只需要知道所需的对象应该找哪一个工厂类即可

 

比如下图所示的VideoFactory。

好处是可扩展性好,只要出现新的需求类型,比如其他类型的Video,那就新建一个对应的Video类,以及对应的工厂类就可以,对原代码的不产生影响。

坏处就是,随着时间拉长和需求增多,类会很多,可维护性不高。

2、代码

https://github.com/phs999/DesignPatterns/tree/b94b88ac66735e7c0e42c894dc32b58830137dae/design_pattern/src/creational/factorymethod/example2

package creational.factorymethod.example2;

public class Test {
    public static void main(String[] args) {
        VideoFactory videoFactory = new JavaVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();
    }

}
package creational.factorymethod.example2;

public class PythonVideoFactory extends VideoFactory{

	@Override
	public Video getVideo() {
		return new PythonVideo();
	}
	

}
package creational.factorymethod.example2;

public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("录制Python课程视频");
    }
}

3、实际源码应用

java.uitl.Collection.java与java.util.ArrayList.java

首先,Collection接口中的iterator方法,类似于上面在VideoFactory抽象类中定义的getVideo。

ArrayList类则实现了Collection接口,同时实现了iterator方法,具体定义了获取Iterator的细节,类似于上面的JavaVideoFactory对VideoFactory抽象类的继承并实现getVideo方法,定义了获取Video对象的细节。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值