常说的几种工厂模式就是如下几种:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
PreWriting
标题开玩笑,我可能喜欢开玩笑,大家都乐呵……
其中,在23中设计模式中,简单工厂并不在其列,但是常常提起是因为它的思想也是“解耦”,并不能因为它不在23种设计模式中就不算它是设计模式,这种说法在我这里认为是错误(不过这些也无所谓),让代码整洁的设计就应该是设计模式,设计模式的初衷也是如此,如果不是怕别人说我偏执,我甚至愿意管规范命名变量也叫设计模式(开个玩笑)。
另外,想与各位共勉的是:阅读博客,写博客,哪怕是阅读书籍也要有专业的思考。在我复习设计模式的过程中,发现很多的博客,说的根本不对或不贴切,这会给读者带来很大的学习成本,真是万般无奈……如果有不同意见,欢迎各种形式探讨和纠正,如果我有错误且您愿意客气点指正我,我会表示感谢。
正文
工厂模式,在我的理解中,主要的目的是构建对象与其他逻辑(业务逻辑)解耦,看这样一段:
public class Main {
public static void main(String[] args) {
// 业务逻辑
System.out.println("1");
System.out.println("2");
System.out.println("3");
Example example = new Example();
example.setF1("f1");
example.setF2("f2");
example.setF3("f3");
example.setF4("f4");
// 业务逻辑
example.doDaDa();
System.out.println("1");
System.out.println("2");
System.out.println("3");
}
}
@Data
class Example {
private String f1;
private String f2;
private String f3;
private String f4;
public void doDaDa(){}
}
别管这个对象(example)是有多复杂,你要怎么构建——调用setter吗?读配置文件吗?这些都只是要引入一种设计模式的原因,因为new的方式已经让代码变得混乱了。当你想把构建对象这一段与使用对象这一段还有其他逻辑解耦,你就可以使用工厂模式了。至于你觉得它有好多setter(故意加了多一点属性),每一个工厂都要写一遍真的很丑,你甚至可以在工厂里面用建造者模式去构建它,这些都无所谓,因为使用工厂的目的就不在这,真正的目的是解耦。而同类(构建型设计模式)的刚刚提过的建造者模式,注重的是将对象构建出来,二者在使用Example对象的客户端来看似乎区别不大,都是获得了一个对象,深究还是可以发现上述的差别。
具体的实现方式和类图,这一篇写的很全:[工厂模式——这一篇真够了_Java_大头星_InfoQ写作社区](https://xie.infoq.cn/article/88c926822394aa1c80847dd2a#:~:text=工厂模式可以分为三类: 1 简单工厂模式(Simple Factory) 2,工厂方法模式(Factory Method) 3 抽象工厂模式(Abstract Factory))
PostWriting
在检索优秀的博文的时候我看到了一篇写的非常好的博文,里面说的很多东西让我感觉相见恨晚,想法不谋而合,怒贴此处以供日后反复欣赏:什么是工厂模式?工厂模式的作用?为什么要使用工厂模式?_工厂模式解决了什么问题-CSDN博客
标签:System,模式,工厂,思考,println,设计模式,example From: https://www.cnblogs.com/pidanhub/p/18103506