• 面试官:设计模式之简单工厂模式


    真正的大师永远怀着一颗学徒的心
    把一生一分为二、前半生不犹豫、后半生不后悔
    文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。

    在这里插入图片描述

    文章目录
    前言
    一、面试
    二、总结
    前言
    经过长达半年的求职生涯,你们的奇哥终于顶不住了,半年没有收入来源被迫只能先去电子厂上班过渡了,有人问我明明可以靠脸吃饭,为什么非要靠才华,我想这可能就是奇哥天生傲骨吧。

    在这里插入图片描述

    推开工厂的大门,映入眼帘的是一排排破旧的缝纫机,我跟主管说咱们不是电子厂吗,电子在哪里?主管指了指墙上的电子表,说有电子表的工厂就是电子厂(我淦)。。。。

    我又打开了手机上的四七某城,看了看招聘简介的图片,完全就是天壤之别啊,现在打工也必须得用照骗才能骗过来人吗?招聘简介图片如下(吸溜~~)

    在这里插入图片描述

    算了算了,既来之则干之,先去宿舍挑个好地方,去晚了别说床了,地铺都打不到地方。

    在这里插入图片描述
    幸亏来的早,宿舍还没有人来,先占领一个靠窗的挨着暖气的位置,挨着暖气冬天可以把洗完的袜子搭上去充当加湿器(噗。。。)

    开班第一天小伙伴们都干的热火朝天,我踩着缝纫机踏板犹如踩着风火轮般顺滑,就在我跟隔壁小美抛媚眼之际我的手机响了。

    我:“喂,谁呀!”

    面试官:“你好,是奇先生吗,我们是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面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。

  • 相关阅读:
    java反序列化专项
    有监督学习神经网络的回归拟合——基于红外光谱的汽油辛烷值预测(Matlab代码实现)
    K8S原理架构与实战教程
    基于深度学习的任务放置在具有异质工作负载的分布式机器学习集群中的应用(论文笔记)
    LabVIEW设计程序框图
    纽交所上市公司安费诺宣布将以1.397亿美元收购无线解决方案提供商PCTEL
    Json字符串内容比较-超实用版
    IDEA找不到Maven窗口
    【Flutter】【widget】BottomNavigationBar和BottomAppBar
    Make.com实现多个APP应用的自动化的入门指南
  • 原文地址:https://www.cnblogs.com/xiaoqiJava/p/16622644.html