设计模式——工厂模式

工厂模式源代码:

👉链接:https://pan.baidu.com/s/1Isgq9uQ0RD2FMrymOwgfQA


提取码:8e0a

在这里插入图片描述

一、工厂模式简介


1. 工厂模式的作用:

◆作用:实现了创建者和调用者的分离详细分类
◆核心本质:

  1. 实例化对象不使用new,用工厂方法代者
  2. 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
2. 工厂模式的分类:

◆简单工厂模式 :用来生产同一等级结构中的任意产品(对于增加新的产品,需要球盖已有代码)
◆工厂方法模式 :用来生产同一等级结构中的固定产品(支持增加任意产品)
◆抽象工厂模式 :围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。

3. 工厂模式实现的OOP七大原则
OOP七大原则

开闭原则 : 对扩展开放,对修改关闭
里氏替换原则 : 继承必须确保超类所拥有的性质在子类中仍然成立
依赖倒置原则 : 要面向接口编程,不要面向实现编程。
单一职责原则 : 控制类的粒度大小、将对象解耦、提高其内聚性。
接口隔离原则 : 要为各个类建立它们需要的专用接口
迪米特法则 : 只与你的直接朋友交谈,不跟“陌生人”说话。
合成复用原则 : 尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

工厂模式实现的原则
开闭原则		: 一个软件的实体应当对扩展开放,对修改关闭
依赖倒转原则 	: 要针对接口编程,不要针对实现编程
迪米特法则	: 只与你直接的朋友通信,而避免和陌生人通信

在这里插入图片描述

二、工厂模式实现


三种工厂模式源代码:

👉链接:https://pan.baidu.com/s/1Isgq9uQ0RD2FMrymOwgfQA
提取码:8e0a

1. 简单工厂模式
实现五菱(WuLing)和特斯拉(Tesla)两种工厂的工厂模式
1.1 结构图:

简单工厂模式

1.2 具体实现:

CarFactory:

package factory.simple;

/**
 * @author eli_zy
 * @date 2021/8/11
 */

//静态工厂模式
//增加一个新产品需要修改大量代码
public class CarFactory {
    //方法一
    public static Car getCar(String name) {
        if (name.equals("WuLing")) {
            return new WuLing();
        } else if (name.equals("Tesla")) {
            return new Tesla();
        } else {
            return null;
        }
    }
    
    //方法二
    public static Car getWuLing() {
        return new WuLing();
    }

    public static Car getTesla() {
        return new Tesla();
    }
}

在这里插入图片描述

2. 工厂方法模式

需要新加一个车工厂接口(CarFactory),每种车的实体类之后,再为其设置好 一个工厂,相当于在工厂上又加了一层

2.1 结构图:

在这里插入图片描述
每种车的实体类之后,再为其设置好 一个工厂,相当于在工厂上又加了一层
在这里插入图片描述

2.2 具体实现:

在这里插入图片描述

车工厂接口(CarFactory)

package factory.Method;

//工厂方法(每个车都有自己的工厂)
public interface CarFactory {
    Car getCar();
}

TeslaFactory

package factory.Method;
public class TeslaFactory implements CarFactory{
    @Override
    public Car getCar() {
        return new Tesla();
    }
}

WuLingFactory

package factory.Method;
public class WuLingFactory implements CarFactory{
    @Override
    public Car getCar() {
        return new WuLing();
    }
}
3. 抽象工厂模式

实现工厂和产品族之间的关系,使用于产品种类变化不大的情况
在这里插入图片描述

3.1 结构图:

在这里插入图片描述

3.2 具体实现:

HuaweiFactory

package factory.Abstract;
public class HuaweiFactory implements IProductFactory{
    @Override
    public IPhoneProduct iphoneProduct() {
        return new HuaweiPhone();
    }

    @Override
    public IRouterProduct irouterProduct() {
        return  new HuaweiRouter();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值