java创建型模式——抽象工厂模式

创建型模式-抽象工厂模式

抽象工厂模式案例

抽象工厂模式定义

抽象工厂模式在工厂方法模式做了一次封装

官方类图

image-20220428115510310

产品族图

image-20220428115018681

抽象工厂模式图

image-20220428114109667

类图

image-20220428114214316

代码实现抽象工厂模式案例

业务描述:

创建华为生产手机类
package com.gun.java23mvc.factory.abstracts;
/**
 * 华为生产手机类
 * @author jkl
 *
 */
public class HuaWeiPhone implements IPhoneProduct{

	@Override
	public void start() {
		System.out.println("华为开机");
	}

	@Override
	public void shutdown() {
		System.out.println("华为关机机");
	}

	@Override
	public void callUp() {
		System.out.println("华为手机打电话");		
	}

	@Override
	public void sendSMS() {
		System.out.println("华为手机发送短信");		
	}

}

创建生产华为路由器
package com.gun.java23mvc.factory.abstracts;
/**
 * 华为生产路由器
 * @author jkl
 *
 */
public class HuaWeiRouter implements IRouterProduct{

	@Override
	public void start() {
		System.out.println("开启华为路由器");			
	}

	@Override
	public void shutdown() {
		System.out.println("关闭华为路由器");			
	}

	@Override
	public void openWifi() {
		System.out.println("打开华为wifi");			
	}

	@Override
	public void setting() {
		System.out.println("设置华为路由器");		
	}

}
创建生产小米手机
package com.gun.java23mvc.factory.abstracts;
/**
 * 生产小米手机
 * @author jkl
 *
 */
public class XiaomiPhone implements IPhoneProduct{

	@Override
	public void start() {
		System.out.println("小米打开机");			
	}

	@Override
	public void shutdown() {
		System.out.println("小米打关机");		
	}

	@Override
	public void callUp() {
		System.out.println("小米打电话");
	}

	@Override
	public void sendSMS() {
		System.out.println("小米发送短信");	
	}
	
}
创建小米生产路由器
package com.gun.java23mvc.factory.abstracts;
/**
 * 生产小米路由器
 * @author jkl
 *
 */
public class XiaomiRouter implements IRouterProduct{

	public void start() {
		System.out.println("开启小米路由器");			
	}

	@Override
	public void shutdown() {
		System.out.println("关闭小米路由器");			
	}

	@Override
	public void openWifi() {
		System.out.println("打开小米wifi");			
	}

	@Override
	public void setting() {
		System.out.println("设置小米路由器");		
	}

}

创建手机生产接口
package com.gun.java23mvc.factory.abstracts;

/**
 * 生产手机接口
 * @author jkl
 *
 */
public interface IPhoneProduct {
	
	public void start();//开机
	public void shutdown();//关机
	public void callUp();//打电话
	public void sendSMS();//发送短信
	

}

创建路由器生产接口
package com.gun.java23mvc.factory.abstracts;
/**
 * 生产路由器接口
 * @author jkl
 *
 */
public interface IRouterProduct {
	public void start();//开机
	public void shutdown();//关机
	public void openWifi();//打开wifi
	public void setting();//设置Wifi
}

创建统一抽象工厂生产接口
package com.gun.java23mvc.factory.abstracts;
/**
 * 统一抽象产品工厂类
 * @author jkl
 *
 */
public interface IProductFactory {

	//生产手机
	IPhoneProduct iphoneProduct();
	//生产路由器
	IRouterProduct iRouterProduct();
} 

创建华为工厂
package com.gun.java23mvc.factory.abstracts;

/**
 * 华为工厂
 * @author jkl
 *
 */
public class HuaWeiFactory implements IProductFactory{

	@Override
	public IPhoneProduct iphoneProduct() {
		return new HuaWeiPhone();
	}

	@Override
	public IRouterProduct iRouterProduct() {
		return new HuaWeiRouter();
	}

}

创建小米工厂
package com.gun.java23mvc.factory.abstracts;
/**
 * 小米工厂
 * @author jkl
 *
 */
public class XiaomiFactory implements IProductFactory{

	@Override
	public IPhoneProduct iphoneProduct() {
		return new XiaomiPhone();
	}

	@Override
	public IRouterProduct iRouterProduct() {
		return new XiaomiRouter();
	}

}

客户端测试抽象工厂模式
package com.gun.java23mvc.factory.abstracts;
/**
 * 客户端测试购买华为手机和小米手机,及路由器
 * @author jkl
 *
 */
public class TestUserClient {
	public static void main(String[] args) {
		
		XiaomiFactory xiaomi = new XiaomiFactory();
		
		IPhoneProduct product = xiaomi.iphoneProduct();
		product.callUp();
		product.sendSMS();
		
		IRouterProduct router = xiaomi.iRouterProduct();
		router.setting();
		
		System.out.println("************************************");
		//华为手机
		HuaWeiFactory huawei = new HuaWeiFactory();
		IPhoneProduct huaweiP = huawei.iphoneProduct();
		
		huaweiP.callUp();
		huaweiP.sendSMS();
		//华为路由器
		IRouterProduct routerp = huawei.iRouterProduct();
		routerp.setting();
	}

}

输出结果:
小米打电话
小米发送短信
设置小米路由器
************************************
华为手机打电话
华为手机发送短信
设置华为路由器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唂雨云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值