工厂模式简介

本文介绍了工厂模式的三种形式:简单工厂模式、工厂模式和抽象工厂模式。简单工厂模式通过静态方法创建对象,适用于类较少的情况。工厂模式则引入工厂接口,遵循开闭原则,允许扩展而不修改原有代码。抽象工厂模式进一步扩展,增加了产品种类,通过增加新方法在具体工厂类中实现,以适应更多产品创建需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


刚看了一个不错的关于工厂模式的讲解视频,就想着写下来加深一下理解,也方便以后自己复习用。工厂模式主要有三种类型:简单工厂模式、工厂模式和抽象工厂模式,他们之间的关系是层层递进的,依次变得更加抽象。接下来就进入正题。
工厂模式其实就是为了创建某一类的对象,一般我们可以通过new来创建某一类的实例,这种方法需要客户端用到构造模式,也就是知道类内部的具体实现。工厂模式就提供了一种方式:客户端只需要传入想要的对象名就可以获得实例。

简单工厂模式

工厂模式又称为静态工厂方法,属于类创建形模式。可以根据不参数的不同返回不同的实例。专门创建一个类来创建其他类的实例,被创建的实例通常拥有共同的父类,具体的例子如下:
下面展示一些 内联代码片

abstract class Product{
    public void use() {

    }
}

class ProductA extends Product {
    public void use(){
        System.out.println(使用了产品A);
    }
}

class ProductB extends Product {
    public void use(){
        System.out.println(使用了产品B);
    }
}
/*
定义工厂类
*/
class Factory{

    public static Product createProduct(String type){
        if (type.equals(A)){
            return new ProductA();
        }else if (type.equals(B)) {
            return new ProductB();
        }
        return new ProductA();
    }
    public static void main(String[] args){
    	Product product  = Factory.createProduct("A");
    	product.use();
    }
}

工厂模式

工厂模式就是对简单工厂模式的升级。在简单工厂模式种,如果我们想要实现另外的类,也就是工厂类中没有定义的类,我们需要修改工厂类逻辑来满足要求,这不符合开闭原则:对扩展开放,对修改关闭。为了使工厂模式更加灵活,工厂模式采用了延迟创建对象的方式,也就使定义了一个工厂接口,把一大类实例需要满足的方法放在接口里,当具体想申请一个实例的时候先实现这个实例的工厂。范例代码如下:
下面展示一些 内联代码片

import java.util.collection;
public class FactoryPattern {
	public static void main(string[]args){
	Factory factory = new HuaWeiFactory ();
	Phone phone = factory.createPhone();
	phone.printf();
	}
}

interface Phone{
	void printf();
}

class iPhone implements Phone{
	@Override
	public void printf(){
	system.out.println("iphone");
	}
}

class HuaWeiPhone implements Phone{
	@Override
	public void printf(){
	system.out.println("HuaWeiPhone ");
	}
}
/*
工厂接口
*/
interface Factory{
	Phone createPhone{};
}
/*
具体工厂类的实现
*/
class IPhoneFactory implements Factory{
	@Override
	public Phone createPhone() {
	return new iPhone{};
	}
}
class HuaWeiFactory implements Factory{
	@Override
	public Phone createPhone() {
	return new HuaWeiFactory {};
	}
}

抽象工厂模式

抽象工厂模式相比工厂模式只是增加了要实现的产品种类,比如上面的工厂实现了手机类的创建,假如我们现在需要一个口罩的生产类,我们只需要在工厂接口中加入生产口罩所需的方法,然后在具体的工厂类中实现这一方法即可。因此抽象工厂和工厂的区别就是N和1的区别。

总结

工厂设计模式一般包含四个元素:抽象工厂,具体工厂,产品大类,具体产品。抽象工厂就是工厂的接口,具体工厂就是接口的实现,产品大类对应产品的接口,具体产品就是产品的实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值