真正的大师永远怀着一颗学徒的心
把一生一分为二、前半生不犹豫、后半生不后悔
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。
@[TOC]
前言
经过长达半年的求职生涯,你们的奇哥终于顶不住了,半年没有收入来源被迫只能先去电子厂上班过渡了,有人问我明明可以靠脸吃饭,为什么非要靠才华,我想这可能就是奇哥天生傲骨吧。
推开工厂的大门,映入眼帘的是一排排破旧的缝纫机,我跟主管说咱们不是电子厂吗,电子在哪里?主管指了指墙上的电子表,说有电子表的工厂就是电子厂(我淦)。。。。
我又打开了手机上的四七某城,看了看招聘简介的图片,完全就是天壤之别啊,现在打工也必须得用照骗才能骗过来人吗?招聘简介图片如下(吸溜~~)
算了算了,既来之则干之,先去宿舍挑个好地方,去晚了别说床了,地铺都打不到地方。
幸亏来的早,宿舍还没有人来,先占领一个靠窗的挨着暖气的位置,挨着暖气冬天可以把洗完的袜子搭上去充当加湿器(噗。。。)
开班第一天小伙伴们都干的热火朝天,我踩着缝纫机踏板犹如踩着风火轮般顺滑,就在我跟隔壁小美抛媚眼之际我的手机响了。
我:“喂,谁呀!”
面试官:“你好,是奇先生吗,我们是XXX公司的,我们看到了你的简历,现在方便面试吗?”
我:“方便,你面试吧!”
面试官:“好的,那你先说一说你对简单工厂模式的理解吧。”
我:“嗯。。。简单工厂啊,他这个简单工厂其实就是。。。嗯。”(这时老板听见我说简单工厂,立马走过来狡辩)
老板:“我们可不是简单工厂啊,我们的工厂很壮观,很复杂,别听小奇给你瞎说。”
我:(我特么的。。。有你什么事)
一、面试
面试官:你可以说一下简单工厂模式的定义吗?
我:简单工厂模式就是定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
面试官:你能想一个现实生活中的场景来描述一下吗?
我:假设我开了一个果园,叫“真甜呀果园”,我这个果园就可以看成一个工厂(Factory),而从我这个果园产生的水果就被称为产品(Product),假设你来我的果园买水果,你只需要把你想买的水果告诉我,例如苹果,在这里苹果代表一个参数,你告诉我你需要苹果,我就给你生产出来一箱苹果。你并不需要知道苹果是怎么生产出来的,你不需要知道我们苹果是从树上摘的还是地里捡的,你只需要知道一箱50元即可。
面试官:简单工厂模式都有哪些核心角色
我:简单工厂模式有3个角色。
1、Factory(工厂角色):工厂角色就是“真甜呀果园”,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,也就是用户可以直接给厂子打电话说你需要什么水果,然后我们就给你生产,在工厂类中提供了静态的工厂方法factoryMethod(),它返回类型为抽象产品类型Product,例如我们这里产品类型就是箱,什么水果最高都是包装成箱(产品)。
2、Product(抽象产品角色):它是工厂类创建的所有对象的父类,说白了就是水果箱,所有的水果都需要装到箱子里。
3、ConcreteProduct(具体产品角色):它是简单工厂模式的创建目标,也就是最后的水果,例如苹果,香蕉等。每一个具体的产品角色都继承了抽象产品角色,也就是每一个水果都装到箱子里了。
面试官:你能给我简单写一个简单工厂模式吗
1、首先需要一个定制一批水果箱
public abstract class Product {
//所有水果类的公共特点
public void common(){
System.out.println("我们都是水果,我们都能榨汁");
}
//声明抽象业务方法
public abstract void methodDiff();
}
2、然后需要一些真实的水果放入水果箱里
public class Apple extends Product{
@Override
public void methodDiff() {
System.out.println("我是苹果,我5元一斤");
}
}
3、然后需要创建一个工厂来销售这些水果
public class Factory {
//静态工厂方法
public static Product getProduct(String name){
Product product = null;
if(name.equals("苹果")){
product = new Apple();
}
return product;
}
}
4、最后客户给工厂打电话,说我需要苹果
public class Client {
public static void main(String[] args) {
Product product;
product = Factory.getProduct("苹果"); //给工厂打电话要一箱苹果
product.common(); //苹果到家了,我输出一下苹果的好坏
product.methodDiff(); //苹果到家了,我输出一下苹果的好坏
}
}
二、总结
这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。