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

java创建型模式——抽象工厂模式,第1张

创建型模式-抽象工厂模式 抽象工厂模式案例 抽象工厂模式定义

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

官方类图

产品族图

抽象工厂模式图

类图

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

业务描述:

创建华为生产手机类
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();
	}

}

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/886859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存