【工厂模式】

本文详细介绍了三种工厂设计模式:简单工厂模式、普通工厂模式和抽象工厂模式。通过实例代码展示了如何创建和使用这些模式,遵循开闭原则,允许在不修改原有代码的情况下扩展产品。此外,抽象工厂模式还涉及到了产品线的概念,如键盘和鼠标的不同品牌实现。
摘要由CSDN通过智能技术生成

工厂设计模式(3种)

前沿:开闭原则–一个软件实体,应该对扩展开放,对修改关闭(通俗点就是,想改变,就不要改原有的代码,直接新增一个类去实现)
简单工厂模式:

定义:定义一个工厂类,根据不同的参数返回不同的实例

代码实现逻辑:定义一个接口(Mouse,方法sayHi(),),两个鼠标类(HPMouse,DellMouse)实现Mouse接口,在定义一个鼠标工厂(MouseFactory 方法createMouse())

public interface Mouse {
   void sayHi();
}
public class DellMouse implements Mouse{
    @Override
    public void sayHi() {
        System.out.println("这里是戴尔鼠标的实现类");
    }
}
public class HPMouse implements Mouse{
    @Override
    public void sayHi() {
        System.out.println("这里是惠普鼠标的实现类");
    }
}
public interface MouseFactory {
    Mouse createMouser();
}

测试方法
public class FactorymethodDemo {

    public static void main(String[] args) {
        MouseFactory mouseFactory = new HpMouseFactory();
        Mouse mouser = mouseFactory.createMouser();
        mouser.sayHi();
    }
}

UML图在这里插入图片描述

普通工厂模式:

UML类图
在这里插入图片描述
定义:只是定义一个抽象工厂类,让它的子类负责生产不同的实例

public interface MouseFactory {
	Mouse createMouse();
}
public class DellMouseFactory implements MouseFactory{
	public Mouse createMouse() {
		return new DellMouse();
	}
}
public class HPMouseFactory implements MouseFactory{
	public Mouse createMouse() {
		return new HPMouse();
	}
}
public class TestDemo {
	public static void main(String[] args) {
		//这里就是定义一个工厂类,让子类决定实现哪个
		MouseFactory mouseFactory = new HPMouseFactory();
		Mouse mouse = mouseFactory.createMouse();
		mouse.sayHi();
	}
}
这里是惠普鼠标
抽象工厂模式:

在这里插入图片描述
定义:只是普通工厂的变种,多了产品线而已
代码案例:
新增了键盘实体类

public interface KeyBoard {
	void sayHello();
}
public class HPKeyBoard implements KeyBoard{
	public void sayHello() {
		System.out.println("这里是惠普键盘");
	}
}
public class DellKeyBoard implements KeyBoard{
	public void sayHello() {
		System.out.println("这里是戴尔键盘");
	}
}

电脑产品线

public interface ComputerFactory {
	Mouse getMouse();
	KeyBoard getKeyBoard();
}
public class HPComputerFactory implements ComputerFactory{
	public Mouse getMouse() {
		return new HPMouse();
	}

	public KeyBoard getKeyBoard() {
		return new HPKeyBoard();
	}
}
public class DellComputerFactory implements ComputerFactory{
	public Mouse getMouse() {
		return new DellMouse();
	}

	public KeyBoard getKeyBoard() {
		return new DellKeyBoard();
	}
}

测试方法:

public class Demo {
	public static void main(String[] args) {
		ComputerFactory computerFactory = new HPComputerFactory();
		KeyBoard keyBoard = computerFactory.getKeyBoard();
		Mouse mouse = computerFactory.getMouse();
		mouse.sayHi();
		keyBoard.sayHello();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值