设计模式-创建型模式#工厂方法FactoryMethod

本文详细解析了Java设计模式中的Factory Method工厂方法,包括定义、适用性、参与者及其类图,并通过测试类展示了如何应用此设计模式。

此例子是java的23种设计模式中的例子,很久以前就看了。今天下班看来部电影《战狼》,看完了没什么事就翻了一下书,重温了一次,以此做下笔记。


FactoryMethod工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod
使一个类的实例*延伸到其子类。

适用性
1、当一个类不知道它所必须创建的对象的类的时候。
2、当一个类希望由它的子类来指定它所创建的对象的时候。
3、当*将创建对象的职责委托给多个帮助*类中的某一个。并且*将希望哪一个
帮助子类是代理者这一信息局部化的时候。

参与者
1、Product
定义工厂方法所 创建的对象的接口。
2、ConcreteProduct
实现Product接口
3、Creator
声明工厂方法,该方法返回一个Product类型的对象
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的
ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
4、ConcreteCreator

重定义工厂方法以返回一个ConcreteProduct实例。


类图:


*roduct

package com.dsp;

public interface Work {
	void doWork();
}



ConcreteProduct
package com.dsp;

public class StudentWork implements Work {

	@Override
	public void doWork() {
		System.out.println("学生做作业!");
	}

}

package com.dsp;

public class TeacherWork implements Work {

	@Override
	public void doWork() {
		System.out.println("老师审批作业!");
	}

}



Creator
package com.dsp;

public interface IWorkFactory {
	Work getWork();
}

package com.dsp;

public class StudentWorkFactory implements IWorkFactory {

	@Override
	public Work getWork() {
		return new StudentWork();
	}

}



ConcreteCreator
package com.dsp;

public class TeacherWorkFactory implements IWorkFactory {

	@Override
	public Work getWork() {
		return new TeacherWork();
	}

}



测试类
package com.dsp;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		IWorkFactory studentWorkFactory = new StudentWorkFactory();
		studentWorkFactory.getWork().doWork();
		
		IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
		teacherWorkFactory.getWork().doWork();
	}

}

控制台输出:

学生做作业!
老师审批作业!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值