如何通过简单工厂模式开启创建型之门?

2026-05-22 10:201阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1939个文字,预计阅读时间需要8分钟。

如何通过简单工厂模式开启创建型之门?

1. new有何不妥? 在我们没有接触到工厂模式(简单工厂、工厂方法、抽象工厂模式)之前,我们实例化对象唯一的办法就是通过new关键字。然而,大量使用new存在一些问题。

1.“new”有什么不对劲?

在我们没有接触到工厂模式(简单工厂、工厂方法模式、抽象工厂模式)之前,我们实例化对象唯一的方法就是通过“new”关键字来完成。但是,大量的使用“new”关键字来实例化对象会违背一些设计原则,因为代码与具体的类型绑在一起,从而导致过多的依赖于细节而非抽象,这样代码就很难适应需求变化。

在面向对象编程中我们大量的使用到了继承、多态的特性,但是在使用这些特性时往往会延申出一些新的问题。例如在一个有继承模块的代码当中,如果子类发生新增或删除,这就不得不去使用类的“调用层”做出相应的修改,因为你new的都是具体的类型,当下层发生变动就不得不去上层进行修改。对于这样的场景来说,实际上它也违背了设计模式原则之一的“开闭原则”,即对扩展开放,对修改关闭,这会不利于程序的稳定和扩展。

2.举例反映问题

接下来将通过代码案例来反映出,在一个使用继承模块的代码当中,大量使用“new”关键字,在设计层面会带来什么样的缺陷。

阅读全文

本文共计1939个文字,预计阅读时间需要8分钟。

如何通过简单工厂模式开启创建型之门?

1. new有何不妥? 在我们没有接触到工厂模式(简单工厂、工厂方法、抽象工厂模式)之前,我们实例化对象唯一的办法就是通过new关键字。然而,大量使用new存在一些问题。

1.“new”有什么不对劲?

在我们没有接触到工厂模式(简单工厂、工厂方法模式、抽象工厂模式)之前,我们实例化对象唯一的方法就是通过“new”关键字来完成。但是,大量的使用“new”关键字来实例化对象会违背一些设计原则,因为代码与具体的类型绑在一起,从而导致过多的依赖于细节而非抽象,这样代码就很难适应需求变化。

在面向对象编程中我们大量的使用到了继承、多态的特性,但是在使用这些特性时往往会延申出一些新的问题。例如在一个有继承模块的代码当中,如果子类发生新增或删除,这就不得不去使用类的“调用层”做出相应的修改,因为你new的都是具体的类型,当下层发生变动就不得不去上层进行修改。对于这样的场景来说,实际上它也违背了设计模式原则之一的“开闭原则”,即对扩展开放,对修改关闭,这会不利于程序的稳定和扩展。

2.举例反映问题

接下来将通过代码案例来反映出,在一个使用继承模块的代码当中,大量使用“new”关键字,在设计层面会带来什么样的缺陷。

阅读全文