关于设计模式:面试官工厂方法模式是什么

42次阅读

共计 2213 个字符,预计需要花费 6 分钟才能阅读完成。

真正的巨匠永远怀着一颗学徒的心
吃不了学习的苦就要吃生存的苦
文章继续更新,能够微信搜寻【小奇 JAVA 面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。回复【简历模板】有我为大家筹备的简历模板。


前言

明天的电子缝纫机厂仍旧是热气腾腾,小伙子们为了娶媳妇都干劲十足,把脚下的缝纫机踏板踩的直冒烟,就在我聚精会神干活达到一种人机合一的状态时,忽然厂房的门从里面推开了,来了一位新共事,本着不是本人的冷落就必须得看的准则,我和大家一样把眼光缓缓的移向门口。

咦~,这人怎么看着这么眼生呢?这不是网红电瓶哥吗,他怎么可能来打工呢。

趁中午吃饭之际,我找到电瓶哥。

我:“电瓶哥,你不是号称不可能打工的嘛,怎么也来这里打工了啊。”

电瓶哥:“我没有来打工啊,我是来干活的。”

我:“你特么的竟让我无言以对。。。是谁说通你来打工的呀,我挺好奇的。”

电瓶哥:“没有人劝我,是我看到了村口的广告,我筹备挣钱找个婆娘。”

我:“这广告成果真不错呀,通俗易懂又有诱惑力。”

就在这时我的手机忽然响了。

我:“喂,这又是谁啊!”

对方:“我,还是昨天给你打电话面试的,你当初不便吗,咱们再聊会。”

我:“不便,只有是上班时间接电话我都不便。”

一、面试

面试官:咱们明天来聊聊工厂办法模式吧,你说一说你对工厂办法模式的了解?

我:工厂办法模式是简略工厂模式的延长,它继承了简略工厂模式的长处,同时还补救了简略工厂模式的缺点。

面试官:你能说说工厂办法模式比简略工厂模式好在哪里吗?

我:在工厂办法模式中咱们工厂类中的逻辑是依据传进来的参数来进行对应的,就是如果你想买苹果了,那你在工厂类中就得有依据苹果参数生成苹果实例的判断逻辑,当你忽然想吃菠萝了,如果工厂类中之前没有这一块的逻辑,你就得去工厂类中减少这一块的逻辑了,这样你就会频繁的批改工厂类中的代码,这样就不合乎开闭准则了。

而工厂办法模式在工厂类和产品之间减少了一个具体工厂,咱们具体的产品通过具体的工厂来生产,不须要批改工厂类中的逻辑。

例如咱们之前是“真甜呀果园”,你想吃苹果了间接给咱们厂里打电话咱们就给你邮寄一箱苹果。然而咱们当初业务扩大了,咱们开始养家禽了,如果你想吃鸡也能够给咱们打电话,然而这个时候还给“真甜呀果园”打电话就有点不适合了。

所以我当初成立了一个奇哥团体,你想吃什么间接给奇哥团体打电话就行,如果你想吃苹果,你就打电话给奇哥团体,而后奇哥团体给上司的“真甜呀果园”打电话给你邮寄一箱苹果,如果你想吃鸡,你也给奇哥团体打电话,而后奇哥给上司的“真香呀鸡圈”打电话给你邮寄一只鸡。

面试官:那你说一下工厂办法模式有哪些角色吧!

1、Product(形象产品):他是定义产品的接口,他在这里相当于装水果的箱子,或者装鸡的笼子。

2、ConcreteProduct(具体产品):他实现了形象产品接口,他在这里相当于苹果或者鸡。

3、Factory(形象工厂):他在这里相当于奇哥团体,他用于接管客户的电话,而后给客户一箱水果或者一笼鸡。

4、ConcreteFactory(具体工厂):他在这里相当于“真甜呀果园”或者“真香呀鸡圈”,他负责接管团体的电话而后给团体相应的产品。

面试官:那你能够写一下具体的代码来形容一下工厂办法模式吗?

1、首先定义一个箱子接口,这个代表形象产品角色

public interface Box {public void show();
}

2、而后定义一个苹果类,这个代表具体产品

public class Apple implements Box {
    @Override
    public void show() {System.out.println("买了一箱苹果");
    }
}

3、而后定义一个奇哥团体类,这个代表形象工厂

public interface FactoryQG {public void show(String name); // 形象工厂办法
}

4、而后定义一个“真香呀”类,这个代表具体工厂

public class Zxy implements FactoryQG {
    Box box = null;
    @Override
    public void show(String name) {if(name.equals("苹果")){box = new Apple();
            box.show();
            System.out.println("真香呀果园苹果,50 元一箱");
        }
    }
}

5、最初测试

public class Test {public static void main(String[] args) {FactoryQG factoryQG = new Zxy();
        factoryQG.show("苹果");
    }
}

通过下面的过程能够看进去,如果这个时候须要减少一个“鸡圈”,只须要减少一个具体工厂类即可,不须要批改形象工厂类的代码,这样就合乎对扩大凋谢,对批改敞开。

面试官:能够呀小伙子,什么时候有工夫来公司入职呢?

我:再说吧,我先缝完手里这条秋裤再说。。。

二、总结

这里的相干内容还没有整顿结束,文章前面继续更新,倡议珍藏。

文章中波及到的命令大家肯定要像我一样每个都敲几遍,只有在敲的过程中能力发现自己对命令是否真正的把握了。

如果感觉我的文章还不错的话就点个赞吧,另外能够微信搜寻【小奇 JAVA 面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。回复【简历模板】有我为大家筹备的简历模板。

正文完
 0