当前位置: 首页 > news >正文

工厂模式(简单工厂,工厂方法,抽象工厂)

工厂模式
工厂模式是java中最常用的设计模式,主要是用来完成对象的创建,使得对象创建过程和对象使用过程分离。 简单来说是取消对象创建者和使用者的耦合,简化new 对象的创建。
优势 :对象的属性创建完整。
缺点: 创建的类太多容易使开发者混乱。
举例:去商场买手机不用关心手机的零件是如何组装的,只用关注手机牌子。
ps:接口是工厂模式的最终目,重点关注接口。
工厂模式分为:
1.简单工厂模式:
简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。
在这里插入图片描述
手机接口:

public interface Phone {
    void getBrand();
}

小米手机类

public class XiaoMi implements Phone {
    @Override
    public void getBrand() {
        System.out.println("小米");
    }
}

华为手机类

public class HuaWei implements Phone {
    @Override
    public void getBrand() {
        System.out.println("华为");
    }
}

手机factory类

public class PhoneFactory{
    public static Phone getPhone(String phone){
        if("小米".equals(phone)){
           return new Xiaomi();
        }else if ("华为".equals(phone)){
          return new Meizu();
        }else {
            return null;
        }
    }
}

Customer 消费者类

public class Customer {
    public static void main(String[] args) {
        PhoneFactory.getPhone("Xiaomi").getBrand();
        PhoneFactory.getPhone("Meizu").getBrand();
    }
}

2.工厂方法模式:
工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。
在这里插入图片描述

手机接口:

public interface Phone {
    void getBrand();
}

手机工厂接口

public interface PhoneFactory {
    Phone getPhone();
}

小米手机类

public class XiaoMi implements Phone {
    @Override
    public void getBrand() {
        System.out.println("小米");
    }
}

华为手机类

public class HuaWei implements Phone {
    @Override
    public void getBrand() {
        System.out.println("华为");
    }
}

小米工厂类

public class XiaomiFactory implements PhoneFactory {
    @Override
    public Phone getPhone() {
        return new Xiaomi();
    }
}

华为工厂类

public class HuaWeiFactory implements PhoneFactory {
    @Override
    public Phone getPhone() {
        return new HuaWei();
    }
}

消费者类:

public class Customer {
    public static void main(String[] args) {
        Phone xiaomi = new XiaomiFactory().getPhone();
        Phone meizu = new MeizuFactory().getPhone();
        xiaomi.getBrand();
        meizu.getBrand();
    }
}

3.抽象工厂模式:
抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e1c492b1c7f1432f9563fddac1872890.pn

相关文章:

  • 【14】Strongswan watcher详解1
  • P8682 [蓝桥杯 2019 省 B] 等差数列
  • 【C++刷题】二叉树基础OJ题
  • 基于PySide6与pyCATIA的工程图智能文本替换工具开发指南
  • OJ 基础 | 输入处理
  • SDP(一)
  • 鸿蒙HarmonyOS埋点SDK,ClkLog适配鸿蒙埋点分析
  • 深入浅出Redis 缓存使用问题 | 长文分享
  • DeepSeek 教我LLVM(2) : MCTargetDesc 核心模块有哪些?
  • [蓝桥杯]小tips
  • DevOps与功能安全:Perforce ALM通过ISO 26262合规认证,简化安全关键系统开发流程
  • 磁盘存储下红黑树、B 树与 B + 树的原理、操作及对比
  • vue3实现页面端的自适应布局
  • 解决 vite.config.ts 引入scss 预处理报错
  • java学习笔记16——java8的其他新特性
  • 遇到git提交报错:413
  • Nginx常用工具
  • cs224w课程学习笔记-第10课
  • Linux系统使用lshw生成硬件报告方法
  • 循环神经网络 - LSTM 网络的各种变体
  • 永州做网站的公司/事件营销
  • 有哪些网站可以兼职做笔译/百度云登陆首页
  • the7 wordpress 下载/江门网站优化公司
  • 做网站是什么工作/百度一下你就知道官网百度
  • 个人网站设计论文一万字/怎么建网站
  • 饿了么网站做生鲜吗/企业网站定制开发