简单工厂模式

一、是什么

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常具有想通过的父类。

二、模式结构

简单工厂模式包括三个角色:Product、ConcreteProduct、Factory

Product:抽象产品角色

ConcreteProduct:具体产品角色,一般是多个(具体产品一般都是多个呀,要是一个还用查吗)

Factory:工厂角色、工厂类

 

三、设计与实现

需求:某电器公司欲开发一套电器信息介绍库,该库可以通过用户指定的电器名,提供该电器的详细信息。用简单工厂模式设计该信息库。

实现:

1.Product  抽象产品接口

抽象产品接口,是所有具体产品的父类。

package SimpleFactory;

//抽象产品接口
public interface ElectricProduct {
	
    public void showInfo();
	
}

2.ConcreteProduct   具体产品类

具体产品类可以有多个产品,都是具体的用电器,每个具体产品类都必须实现抽象产品接口!

这里设计三个具体用电器产品,分别是电磁炉、电饭煲、电饭锅。

package SimpleFactory;

//具体产品 --- 电磁炉
public class DCLConcreteProduct implements ElectricProduct {
	
	public DCLConcreteProduct(){
		System.out.println("电磁炉产生了!");
	}

	@Override
	public void showInfo() {
		System.out.println("这里是电磁炉的详细信息!");
	}

}
package SimpleFactory;

//具体产品 --- 电饭煲
public class DFBConcreteProduct implements ElectricProduct {

	public DFBConcreteProduct(){
		System.out.println("电饭煲产生了!");
	}
	
	@Override
	public void showInfo() {
		System.out.println("这里是电饭煲的详细信息!");
	}

}
package SimpleFactory;

//具体产品 --- 电饭锅
public class DFGConcreteProduct implements ElectricProduct {

	public DFGConcreteProduct(){
		System.out.println("电饭锅产生了!");
	}
	
	@Override
	public void showInfo() {
		System.out.println("这里是电饭锅的详细信息!");
	}

}

3. Factory 工厂类

提供一个静态工厂方法,根据用电器名字找寻匹配用电器信息。

工厂类用来创建产品,根据从客户端(客户)得到的参数(用电器名字),创建产品,返回产品详细信息。

package SimpleFactory;

/**工厂类
* 创建具体用电器产品
*  @author:CHAoLip
**/

public class ElectricFactory {

	//静态工厂方法
	public static ElectricProduct getElectricProduct(String name){
		ElectricProduct electricProduct = null;
		switch (name) {
		case "电磁炉":
			electricProduct = new DCLConcreteProduct();
			System.out.println("电磁炉初始化了!");
			//electricProduct.showInfo();
			break;
		case "电饭锅":
			electricProduct = new DFGConcreteProduct();
			//electricProduct.showInfo();
			break;
		case "电饭煲":
			electricProduct = new DFBConcreteProduct();
			//electricProduct.showInfo();
			break;
		default:
			System.out.println("你输入的名称有误哦,请再检查一遍!");
			break;
		}
		return electricProduct;
	}
	
}

4.Client 客户端

用户提供用电器名字,工厂负责查询找到用电器信息并返回给客户,若查询不到,提示客户信息是否输入正确。

package SimpleFactory;

import java.util.Scanner;

/**客户端验证执行简单工厂模式
* 客户提供用电器名字 得到用电器详细信息
*  @author:CHAoLip
**/

public class ElectricClient {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入用电器名称:");
		String name = scanner.nextLine();
		System.out.println("您输入的名称是:" + name);
		ElectricFactory.getElectricProduct(name);
		
	}
}

5.结果

输入正确和错误的结果分别展示相应信息如下:

 

既然看懂了简单工厂模式,不妨再看看工厂方法模式吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值