设计模式--抽象工厂模式:

工厂方法模式:
每个具体的工厂只有一个或者一组重载的工厂方法,只能生成一种产品,可能会导致系统存在大量的工厂类,势必会增加系统的开销。
抽象工厂方法:
一个工厂可以生产一系列的产品(一族产品),极大的减少工厂类的数量。
案例:
由于智能家居的发展,一个品牌的家用电器,可以配套使用,现在有TCL的家用电器,和海尔的电器供顾客选择,请你使用抽象工厂模式,实现案例。
类图:
在这里插入图片描述
TV接口:

public interface TV {
public String TVBrand();
}

AC接口:

public interface AC {
	public String ACBrand();
}

WM接口:

public interface WM {
	public String WMBrand();
}

TCLTV类:

public class TCLTV implements TV {

	public String TVBrand() {
		// TODO Auto-generated method stub
		return "TCL电视";
	}

}

TCLAC类:

public class TCLAC implements AC{
	public String ACBrand() {
		// TODO Auto-generated method stub
		return "TCL空调";
	}

}

TCLWM类:

public class TCLWM  implements WM{


	public String WMBrand() {
		// TODO Auto-generated method stub
		return "TCL洗衣机";
	}

}

HaierTV类:

public class HaierTV {


	public String TVBrand() {
		// TODO Auto-generated method stub
		return "海尔电视";
	}
}

HaierAC:

public class HaierAC implements AC{

	public String ACBrand() {
		// TODO Auto-generated method stub
		return "海尔空调";
	}

}

HaierWM:

public class HaierWM  implements WM{


	public String WMBrand() {
		// TODO Auto-generated method stub
		return "海尔洗衣机";
	}

}

HAfactory接口:

public interface HAfactory {
public String makeAC();
public String makeTV();
public String makeWM();
}

HaierHAFactory:

public class HaierHAFactory implements HAfactory{

	@Override
	public String makeAC() {
		// TODO Auto-generated method stub
		return new HaierAC().ACBrand();
	}

	@Override
	public String makeTV() {
		// TODO Auto-generated method stub
		return new HaierTV().TVBrand();
	}

	@Override
	public String makeWM() {
		// TODO Auto-generated method stub
		return new HaierWM().WMBrand();
	}

}

TCLHAFactory:

public class TCLHAFactory implements HAfactory {

	@Override
	public String makeAC() {
		// TODO Auto-generated method stub
		return new TCLAC().ACBrand();
	}

	@Override
	public String makeTV() {
		// TODO Auto-generated method stub
		return new TCLTV().TVBrand();
	}

	@Override
	public String makeWM() {
		// TODO Auto-generated method stub
		return new TCLWM().WMBrand();
	}

配置文件:beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="tclhafactory" class="abstractFactory.TCLHAFactory"/>
    <bean id="haierhafactory" class="abstractFactory.HaierHAFactory"/>
</beans>

Client:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {

	public static void main(String[] args) {
		 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
	        HAfactory haFactory=(HAfactory)applicationContext.getBean("tclhafactory");
	        System.out.println(haFactory.makeAC());
	        System.out.println(haFactory.makeTV());
	        System.out.println(haFactory.makeWM());
	}

}

结果:
在这里插入图片描述

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {

	public static void main(String[] args) {
		 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
	        HAfactory haFactory=(HAfactory)applicationContext.getBean("haierhafactory");
	        System.out.println(haFactory.makeAC());
	        System.out.println(haFactory.makeTV());
	        System.out.println(haFactory.makeWM());
	}

}

结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值