乐趣区

关于java:面试官设计模式之简单工厂模式

真正的巨匠永远怀着一颗学徒的心
把毕生一分为二、前半生不犹豫、后半生不悔恨
文章继续更新,能够微信搜寻【小奇 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 面试】第一工夫浏览,回复【材料】更有我为大家筹备的福利哟!回复【我的项目】有我为大家筹备的一些我的项目源码。回复【简历模板】有我为大家筹备的简历模板。

退出移动版