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

阅读(16)
评论(0)
Beginning

此例子是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();
	}

}

控制台输出:

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


Ending
本文如果对您有帮助欢迎打赏作者,多少随意一分也是爱!

作者:Java夜未眠

出处:https://www.cnblogs.com/liangxianning/p/17058271.html

版权声明:本博客所有文章除特别声明外,均采用「 MIT 许可协议。」许可协议进行许可

关于博主: 评论和私信会可能回复较慢,点击上面加人图标加我为好友吧

posted @   Java夜未眠  阅读(16)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
more_horiz
keyboard_arrow_up light_mode
选择主题
点击右上角即可分享
微信分享提示