欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java中factory_JAVA工厂方法模式(Factory Method)

发布时间:2025/3/21 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java中factory_JAVA工厂方法模式(Factory Method) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.普通工厂模式

普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。

1-1.建立Sender接口

public interface Sender {

public void send();

}

1-2 创建实现类实现Sender接口,比如文本与图像以及视频类

文本类

public class TextSender implements Sender {

public void send() {

System.out.println("this is Textsender!");

}

}

图像类

public class ImageSender implements Sender {

public void send() {

System.out.println("this is Imagessender!");

}

}

视频类

public class VideoSender implements Sender {

public void send() {

System.out.println("this is Imagessender!");

}

}

1-3建立工厂类

public class SendFactory {

public Sender produce(String type) {

if ("mail".equals(type)) {

return new TextSender();

}

else if ("sms".equals(type)) {

return new ImageSender();

}

else if ("video".equals(type)) {

return new VideoSender();

}

else {

System.out.println("请输入正确的类型!");

return null;

}

}

}

1-4 普通的工厂模式设计已经完成了。下面在main中测试下

public class Main {

public static void main(String[] args) {

SendFactory factory = new SendFactory();

Sender text=factory.produce("text");

text.send();

Sender image=factory.produce("image");

image.send();

Sender video=factory.produce("video");

video.send();

}

}

测试结果截图:

但是这种普通工厂方式一旦参数不正确不会产生对象。为了改进这个方式便有了多工厂方法,一个方法产生对应的一个对象,通过调用方法来产生对象

2-1多工厂模式

只要改变1-3中的工厂类即可。

public class SendFactory {

public static Sender produceText(){

return new TextSender();

}

public static Sender produceImage(){

return new ImageSender();

}

public static Sender produceVideo(){

return new VideoSender();

}

}

在main中测试

2-2

public class Main {

public static void main(String[] args) {

SendFactory factory = new SendFactory();

Sender text = factory.produceText();

text.send();

Sender image = factory.produceImage();

image.send();

Sender video = factory.produceVideo();

video.send();

}

}

测试结果如下图

3。上面例子要是有新的类产生要去更改工厂类,不利于维护,对于这样的情况我们可以采用抽象工厂模式。

还是用上面的作为例子。

3-1.建立Sender接口

public interface Sender {

public void send();

}

3-2 创建实现类实现Sender接口,比如文本与图像以及视频类

文本类

public class TextSender implements Sender {

public void send() {

System.out.println("this is Textsender!");

}

}

图像类

public class ImageSender implements Sender {

public void send() {

System.out.println("this is Imagessender!");

}

}

视频类

public class VideoSender implements Sender {

public void send() {

System.out.println("this is Imagessender!");

}

}

3-3提供一个接口让工厂类来实现这边我用offer接口

public interface Offer {

public Sender offer();

}

3-4 对应类由对应工厂来生产

public class TextSenderFactory implements Offer {

public Sender offer() {

return new TextSender();

}

}

public class ImageSenderFactory implements Offer {

public Sender offer() {

return new ImageSender();

}

}

public class VideoSenderFactory implements Offer {

public Sender offer() {

return new VideoSender() ;

}

}

3-5.已经完成了去main中测试下

public class Main {

public static void main(String[] args) {

Offer textoffer=new TextSenderFactory();

Sender text=textoffer.offer();

text.send();

Offer imageoffer=new ImageSenderFactory();

Sender image=imageoffer.offer();

image.send();

}

}

测试结果:

总结

以上是生活随笔为你收集整理的java中factory_JAVA工厂方法模式(Factory Method)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。