工厂类 - 假人的设计模式

Aqu*_*irl 5 design-patterns factory-pattern

假人的设计模式:

你去了 - 你有一个工厂班

在此输入图像描述

我从工厂模式中理解的是,它可以帮助我们在需要创建新对象时避免不断修改代码.但是该函数createConnection不必修改它来创建和添加另一个对象?那么这有什么用呢?

我错过了什么意思?

Dir*_*irk 4

工厂模式可用于限制您必须执行的代码更改数量。以您的代码为例,假设您有很多使用数据库连接的函数

void ExampleMethod() {
    var con = new MySqlConnection();

    // do something with con
}
Run Code Online (Sandbox Code Playgroud)

现在您想使用 Oracle 而不是 MySQL,因此您必须将每一行更改new MySqlConnectionnew OracleConnection.

工厂可以解决这个问题

void ExampleMethodUsingFactories() {
    var con = factoryInstance.createConnection();
}
Run Code Online (Sandbox Code Playgroud)

其中factoryInstance实例化一次。现在,更改整个程序以使用 Oracle 变得微不足道。您只需将“MySQL”替换为“Oracle”即可。您不必更改实际使用数据库连接的方法。factoryInstance = new FirstFactory("MySql")

当然,添加新的数据库引擎仍然意味着您必须更改工厂代码,但这只是在一个类中。