⭐简单说两句⭐
作者:后端小知识
CSDN个人主页:后端小知识
🔎GZH:
后端小知识
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
🚗简单工厂模式
定义
定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类
角色
-
工厂角色 factory
-
抽象产品 product
-
具体产品 concreteproduct
模式类图
🍓核心代码类(demo)
举个例子:
告诉工厂需要的手机名称,然后工厂生成手机
类图
我们编写代码的顺序:
Mobile > 具体Product > MobileFactory
Mobile.java
抽象产品
public abstract class Mobile {
protected String name;
protected float price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public abstract void call();
}
MiProduct.java
具体产品
public class MiProduct extends Mobile {
public MiProduct(){
this.name="Mi";
this.price=3000;
}
@Override
public void call() {
System.out.println("我的小米");
}
}
MobileFactory.java
工厂
public class MobileFactory {
public static Mobile createMobile(String name) {
Mobile mobile = null;
if(Objects.equals(name, "Vivo")){
mobile = new VivoProduct();
}else if(Objects.equals(name, "Mi")){
mobile = new MiProduct();
}
return mobile;
}
}
客户端
public class Client {
public static void main(String[] args) {
// 1.购买手机
Mobile m = MobileFactory.createMobile("Vivo");
// 2.使用手机
m.call();
}
}
模式优点
1.对象的创建与使用是分离的
2.客户端无需知道具体产品的类名,只需知道具体产品所对应的参数
模式缺点
- 工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响
- 增加系统中类的个数(引入了新的工厂类),增加了系统的复杂度和理解难度
- 系统扩展困难,一旦添加新产品不得不修改工厂逻辑
- 由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构,工厂类不能得到很好地扩展
模式适用环境
- 工厂类负责创建的对象比较少,这样的话不会造成工厂类业务太复杂
- 客户端只知道传入工厂类的参数,对于如何创建对象并不关心
好啦,就到这里啦,简单工厂模式总体来说来说很容易理解的啦,若有疑问的友友欢迎评论区留言额😘
结语
谢谢你的阅读
,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!😘😘😘
💬
作者:后端小知识
CSDN个人主页:后端小知识
🔎GZH:后端小知识
🎉欢迎关注🔎点赞👍收藏⭐️留言📝