工厂模式,我更愿意叫它是“父母模式”或者“亲人模式”。
假设我们都是小孩子,我们需要 食物 衣服 玩具。
如果我向卖食物的老板,卖衣服的老板,卖玩具的老板借的话,我将欠他们东西。
(耦合)
后果是:第一,他们的儿子我不敢打了!(安全性的角度)
第二,如果某位老板搬家了,我必须自己去找其他老板。要知道我只是个小孩,这对我来说,是个极大的挑战。(修改自己的代码)
如果我是向父母要所需的东西,我只欠父母的。我受不到的限制只不过是以后不能抓弄妹妹了。
工厂模式,就类似于“父母”这样一个角色。其他程序需要某个对象,就向“工厂”类申请。从而降低了与其他类的耦合。
工厂模式分三种:简单工厂模式,工厂方法模式,抽象工厂模式。
简单工厂模式,就好比我们向父母要“玩具”。父母买了一房子的玩具,我们需要什么玩具,就跟父母说一声就行了!(传参数)
这种模式的缺点:父母会浪费钱。因为未必所有玩具我都需要。(可能浪费不必要的内存)
工厂方法模式,就好比我们要什么玩具,父母才买什么玩具给我们。这样会省钱。(省内存)
这种模式的不足:父母并不是什么东西都买给我们的。
抽象工厂模式: 就好比当父母不肯给我们某东西的时候,我们可以问“亲人”要。
当然,父母也是“亲人”。所以,使用这种模式的时候,最上层的接口就是“亲人”。我们要的所有东西都向“亲人”要。这样,我们要的东西就可以更多了。
假设我们都是小孩子,我们需要 食物 衣服 玩具。
如果我向卖食物的老板,卖衣服的老板,卖玩具的老板借的话,我将欠他们东西。
(耦合)
后果是:第一,他们的儿子我不敢打了!(安全性的角度)
第二,如果某位老板搬家了,我必须自己去找其他老板。要知道我只是个小孩,这对我来说,是个极大的挑战。(修改自己的代码)
如果我是向父母要所需的东西,我只欠父母的。我受不到的限制只不过是以后不能抓弄妹妹了。
工厂模式,就类似于“父母”这样一个角色。其他程序需要某个对象,就向“工厂”类申请。从而降低了与其他类的耦合。
工厂模式分三种:简单工厂模式,工厂方法模式,抽象工厂模式。
简单工厂模式,就好比我们向父母要“玩具”。父母买了一房子的玩具,我们需要什么玩具,就跟父母说一声就行了!(传参数)
这种模式的缺点:父母会浪费钱。因为未必所有玩具我都需要。(可能浪费不必要的内存)
工厂方法模式,就好比我们要什么玩具,父母才买什么玩具给我们。这样会省钱。(省内存)
这种模式的不足:父母并不是什么东西都买给我们的。
抽象工厂模式: 就好比当父母不肯给我们某东西的时候,我们可以问“亲人”要。
当然,父母也是“亲人”。所以,使用这种模式的时候,最上层的接口就是“亲人”。我们要的所有东西都向“亲人”要。这样,我们要的东西就可以更多了。