首页 生活指南 正文内容

工厂模式的好处(使用工厂模式最主要的好处是什么)

阿立指南 生活指南 2022-12-02 04:12:10 147 0

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

工厂模式、简单工厂模式、抽象工厂模式三者的区别:

1、创建对象不同。创建对象时,“工厂模式”使用Factory模式替代使用new创建对象;“简单工厂模式”使用fw模式建立对象;“抽象工厂模式”则使用迭代模式创建对象。

2、定义变量不同。“工厂模式”不用事先定义变量,使用时随时引用便可。“简单工厂模式”,使用参数或者配置文件等事先定义好的变量,然后利用分支判断初始化具体产品类并返回。“抽象工厂模式则”不符合“开发-封闭”原则,每次增加产品,都需要修改类方法。

3、接口数量不同。“工厂模式”有两至三个接口。“简单工厂模式”只有一个接口。抽象工厂模式理论上具有无限个接口。

扩展资料

编程使用“工厂模式”的优缺点:

1、优点:

方便扩展算法,比如增加一个开根号的功能,我们只要继续继承运算类就行了,同时客户端也就是使用者不知道具体的实现细节,只要给出相关标示符,工厂函数就马上给他创建一个他想要的实体就行了。减少了使用者和功能开发者之间的耦合度。

2、缺点:

在进行扩展的时候,我们要更改工厂函数里面的那个分支语句Switch,这样便破坏了OCP,而且当有多级结构继承的时候,简单工厂就会因为只能对应平行一层记得继承,不得不使得好多类继承同一个接口,然后得到A*B这么多的工厂实体可能,工厂函数很难维护。

参考资料来源:百度百科--工厂模式

工厂模式的好处(使用工厂模式最主要的好处是什么) 第1张

简单工厂模式的优缺点

优点

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

缺点

由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;

这些缺点在工厂方法模式中得到了一定的克服。

使用场景

工厂类负责创建的对象比较少;

客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

C++代码: //算法的父类,抽象出返回结果的接口class Operation{public:    virtual int GetResult() =0;public:    double m_Num1;    double m_Num2;};//工厂类,用于生产相应的算法子类class OperationFactry{public:    OperationFactry(void);    ~OperationFactry(void);public:    static Operation* CreateOperate(int n )    {        switch(n)        {        case 1:            return new OperationAdd;            break;        }    }};//算法子类,由工厂类创建,重写父类中的虚函数class OperationAdd:Public Operation{public:    int GetResult();};

java中抽象工厂模式和原型模式之间的区别

工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close principle),对扩展开放,对修改关闭。

抽象工厂模式:这个模式我总是感觉和builder模式非常相似。

工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。

有人做如下的比较:

工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类可以创建多个具体产品类的实例。

区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。

工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

工厂模式有什么优点

工厂模式的优点是为系统结构提供了灵活的动态扩展机制。方便维护。

例如:请朋友去麦当劳吃汉堡,不同的朋友有不同的口味,要每个都记住是一件烦人的事情,如果你采用Factory Method模式,带着朋友到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让朋友直接跟服务员说就行了。

之前一直不明白工厂模式的好处是什么,就是为什么不用new,有人说假如有成百上千和地方都用的是new

工厂模式是多态的一个应用,new对象的时候都用父类引用,更改的时候就不用变

什么叫做工厂模式能举个例子吗,他有什么好处 ,

工厂模式的特点就是隐藏了创建示例的细节

打个比方 User teacher student, 老师和学生都是用户的之类

UserFactory.creator("teacher") UserFactory.creator("student")

通过这样的形式,你能隐藏真正创建的细节

而且替换原来的逻辑也变得统一

这个也不是三言两语能讲清楚的

胡乱说说

模式是要在大量的实践中,通过重构来理解的

程序开发本身是个实践性很强的领域

欢迎 发表评论:

文章目录
    搜索