简单工厂,工厂方法,抽象工厂模式
创始人
2024-01-21 15:10:43
0

软件设计七大原则

在这里插入图片描述

一、简单工厂(静态工厂方法)

它存在的目的很简单:定义一个创建对象的接口。

组成:

工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻		辑。在java中它往往由一个具体类实现。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

在这里插入图片描述

例子

1.抽象产品角色

package simpleFactory;
public interface car {void name();
}

2.具体产品角色

package simpleFactory;public class tesla implements car{@Overridepublic void name() {System.out.println("特斯拉");}
}
package simpleFactory;public class wuLing implements car{@Overridepublic void name() {System.out.println("五菱");}
}

3.工厂类角色

package simpleFactory;public class carFactory {public static car getCar(String car){if (car.equals("wuLing")){return new wuLing();}else if (car.equals("tesla")){return new tesla();}else {return null;}}
}

4.顾客测试类

package simpleFactory;
public class consumer {public static void main(String[] args) {car wuLing = carFactory.getCar("wuLing");car tesla = carFactory.getCar("tesla");wuLing.name();tesla.name();}
}

优缺点

优点

专门定义一个工厂类负责创建其他类的实例,最大的优点在于工厂类
中包含了必要的逻辑,根据客户需要的条件动态实例化相关的类。

优点

当需要增加一种产品时,比如ProductC就需要修改简单工厂类SimpleFactory(增加if-else块),这违背了开闭原则。

二、工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
在这里插入图片描述

例子

//创建工厂接口CarFactory:public interface CarFactory {Car createCarFactory();
}
​//创建具体类型的工厂:public class BenzFactory implements CarFactory {@Overridepublic Car createCarFactory() {return new BiyadiCar();}
}
​
public class BiyadiFactory implements CarFactory{@Overridepublic Car createCarFactory() {return new BiyadiCar();}
}
​
public class HongqiFactory implements CarFactory{@Overridepublic Car createCarFactory() {return new HongqiCar();}
}
​
​//测试public static void main(String[] args) {HongqiFactory hongqiFactory = new HongqiFactory();Car carFactory = hongqiFactory.createCarFactory();carFactory.createCar();}
​
​
​
}
//输出:生产比亚迪

结论:用户只需要知道具体工厂的名字,就可以得到想要的产品。
其满足单一原则,开闭原则,但是灵活性较差。

三、抽象工厂

抽象工厂由抽象工厂,具体工厂,抽象产品和具体产品等4个要素构成 

抽象工厂各个元素的作用

  1. 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法
    newProduct(),可以创建多个不同等级的产品。
  2. 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
  3. 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
  4. 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间是多对一的关系。

结构如下:
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...