经典Java面试题的答案——设计模式

大家好,我是酱油君。这是互联网技术岗的分享专题,废话少说,进入正题:

88.说一下你熟悉的设计模式?

见链接:https://mp.weixin.qq.com/s?__biz=MzkxOTE3MzAwNg==&mid=2247483780&idx=1&sn=01b8402aeaf9cf91ea28d8d583d558f1&chksm=c1a76365f6d0ea7311008569555b28bda91fbc5a99b6dee0d7452be3444842dc1699e417b16f&token=1368287579&lang=zh_CN#rd

89.简单工厂和抽象工厂有什么区别?

简单工厂模式

这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。

简单工厂模式的主要角色如下:

  • 简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
  • 抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。
  • 具体产品(ConcreteProduct):是简单工厂模式的创建目标。

抽象工厂模式:

抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

使用抽象工厂模式一般要满足以下条件。

  • 系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。
  • 系统一次只可能消费其中某一族产品,即同族的产品一起使用。

抽象工厂模式的主要角色如下:

  • 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。
  • 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
  • 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
  • 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间是多对一的关系。
你是否感觉技术要学的内容太多?永无止境?
你是否感觉已经学会很多,但是面试就挂?
非酱油已经启动互联网“零”计划
提供1对1辅导,带你从“零”到入职
中途不经过任何弯路,最短距离拿到高薪offer
到非酱油藏经阁修炼,工资最少涨2000!