设计模式——简单工厂模式(Simple Factory)

一、模式定义

简单工厂模式(Simple Factory Pattern):定义一个类(通过向其传递参数方式)来创建其他类的实例(这些类通常具有共同父类)的模式,又称为静态工厂方法(Static Factory Method)模式。

二、模式类图

在这里插入图片描述
简单工厂类(SimpleFacotry):用于生产不同的类对象
抽象产品(Product):用于定义存放产品类,存放产品的共有属性。
具体产品(ConcreteProductA & B):继承抽象产品类,并存放产品的特有属性。

三、模式简要代码(JAVA代码)

class SimpleFactory {
	//用静态方法的好处是:不用实例化工厂对象,直接通过类名调用使用即可
	public static Product FactoryMethod(String arg) {
		//这里是简单工厂类
		if(arg.equals("A")) { return new ConcreteProductA();}
		else if(arg.equals("B")) { return new ConcreteProductB();}
		else { System.out.println("error"); return null;}
		
	}
}

abstract class Product{
	//这里是抽象产品类
	void SameOperation() {}
	abstract void DiffOperation();
}

class ConcreteProductA extends Product{
	//这里是具体产品类A
	void DiffOperation() {
		System.out.println("This is ConcreteProductA");
	}
}

class ConcreteProductB extends Product{
	//这里是具体产品类B
	void DiffOperation() {
		System.out.println("This is ConcreteProductB");
	}
}
//主函数
public class Main{
	public static void main(String[] args) {
		Product A = SimpleFactory.FactoryMethod("A");
		Product B = SimpleFactory.FactoryMethod("B");
		
		A.DiffOperation();
		B.DiffOperation();
	}
}

四、模式优点与缺点

1、优点方面
<1>将对象的创建和对象本身业务处理分离可以,降低系统的耦合度,两者修改时容易。
<2>只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
<3>实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何Java源代码

2.缺点方面
<1>工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则。
<2>由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。

五、模式适用范围

<1>设计所需的具体产品对象较少时。
<2>需要分离对象的创建与使用时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值