设计模式
- 为什么写这篇文章
本人从事Java开发接近两年之久,从毕业到踏入职场得大门,准备用自己掌握得基础知识在职场创出一片天地,但理想很丰满,现实却很骨干(只能说被打击到家了,无限尬死),编码规范、整洁度、复用性无不在我得代码中丝毫未线(真的是菜到家了),但梦想岂能是这么容易就被磨灭的,从最初的揣摩大佬代码、跟读源码,由浅至深,始终加入了某种思想。。。
这里大家应该知道我要说什么了,没错,就是设计模式 这也是我一直在思考并且探究为什么要学设计模式?设计模式的优点是什么?
- 提升查看源码的能力
- 提升自己对复杂业务的逻辑的代码设计能力以及code能力
- 对面试以及后面的职场道路打下扎实的基础
比如我最近刚做了一个统一登录的需求,因为采用oauth2.0标准认证协议,有四种授权方式,要是搁以前的话,估计上去就是咔咔五个if/else,这样不足的地方就是代码臃肿,另外加入又要加入新的个性化认证,岂不是又要手改代码,这无疑从code美观上还是开放性上都显的很不友好。还好,最近刚学了工厂模式和策略模式,呼啦啦,我可不管你有哪些类型,直接一个接口整上剩下的全是弟弟,这就是设计模式的好处,可以装Bi还可以造福后人。
正文
设计模式分为创建型、结构型和行为三种类型,我们首先从创建型入手,今天就以创建型中最常用的工厂模式展开。
工厂模式主要分为三大类:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
简单工厂模式
工厂模式主要是用于对实现逻辑的封装,并且通过对公共的接口提供对象的实列化的服务,在我添加新的类时不需大动干戈,只需要修改一点点就好。
我们以电商平台创建商品为例:
在这个简单工厂里面,如果要创建活动商品1 以及活动商品2,我们要创建商品的时候只要调用简单工厂里面的创建商品方法,根据类型创建出不同的商品然后实列化返回就可以了。
简单工厂几种实现方式:
- 静态工厂模式
我们还是以创建商品为例
package com.michstabe.designMode;
import java.math.BigDecimal;
import java.util.Objects;
/**
* @author michstabe
* @date 2022/4/21 14:16
* @description
*/
public class ProductStaticFactory {
public static Product getProduct(ProductTypeEnum type){
if(Objects.equals(type, ProductTypeEnum.one)){
return new Product("A",