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

发布于:2025-04-13 ⋅ 阅读:(37) ⋅ 点赞:(0)

工厂模式
工厂模式是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