⭐简单说两句⭐
作者:后端小知识
CSDN个人主页:后端小知识
GZH:
后端小知识
欢迎关注点赞收藏⭐️留言
前面简单工厂模式中有一个问题:一旦添加新产品不得不修改工厂逻辑(就是会去修改那个if else 或者 case语句)
那么工厂方法模式就可以解决这个问题
定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
对应的工厂生产对应的手机
类图
编写顺序(顺序不唯一)
Mobile>MiMobile>MobileFactory>MiFactory
代码
Mobile.java
public interface Mobile {
//打电话
void call();
}
MiMobile.java
public class MiMobile implements Mobile {
@Override
public void call() {
System.out.println("我的小米");
}
}
MobileFactory.java
public interface MobileFactory {
//生产手机
Mobile createMobile();
}
MiFactory.java
public class MiFactory implements MobileFactory {
@Override
public Mobile createMobile() {
return new MiMobile();
}
}
客户端代码
public class Client {
public static void main(String[] args) {
MobileFactory miFactory = new MiFactory();
Mobile miMobile = miFactory.createMobile();
miMobile.call();
//========
MobileFactory vivoFactory = new VivoFactory();
Mobile vivoMobile = vivoFactory.createMobile();
vivoMobile.call();
}
}
结果
现在我们发现,我们在添加新的产品时,就不用再去修改工厂的逻辑了,而是通过对应的工厂生产对应的产品
哇偶,优点还是蛮多嘛
好啦,就到这里啦,欢迎大家在评论区讨论工厂方法和简单工厂的区别额
结语
谢谢你的阅读
,由于作者水平有限,难免有不足之处,若读者发现问题,还请批评,在留言区留言或者私信告知,我一定会尽快修改的。若各位大佬有什么好的解法,或者有意义的解法都可以在评论区展示额,万分谢谢。
写作不易,望各位老板点点赞,加个关注!
作者:后端小知识
CSDN个人主页:后端小知识
GZH:后端小知识
欢迎关注点赞收藏⭐️留言