工厂模式之抽象工厂模式

抽象工厂模式:




以脸萌为例,当圣诞节、元旦节、新年来了,需要生产一个节日系列的脸萌产品,不同节日系列的人物..

1> 首先有男孩女孩:

package com.zy.factoryProject;

/**
 * 男孩
 * 
 * @author Administrator
 * 
 */
public interface Boy {

	public void drawMan();
}

package com.zy.factoryProject;

/**
 * 女孩
 * 
 * @author Administrator
 * 
 */
public interface Girl {

	public void drawWomen();
}

2> 当各种节日来了就会有不同系列的男孩女孩,以圣诞节和新年系列为例:(  分别继承Boy和Girl接口)

package com.zy.factoryProject;

/**
 * 圣诞系列的男孩子
 * @author Administrator
 *
 */
public class MCBoy implements Boy {

	@Override
	public void drawMan() {
		System.out.println("---圣诞系列的男孩子---");
	}

}

package com.zy.factoryProject;

/**
 * 圣诞系列的女孩子
 * 
 * @author Administrator
 * 
 */
public class MCGirl implements Girl {

	@Override
	public void drawWomen() {
		System.out.println("---圣诞系列的女孩子---");
	}

}

package com.zy.factoryProject;

/**
 * 新年系列的男孩子
 * 
 * @author Administrator
 * 
 */
public class HNBoy implements Boy {

	@Override
	public void drawMan() {
		System.out.println("---新年系列的男孩子---");
	}

}

package com.zy.factoryProject;

/**
 * 新年系列的女孩子
 * 
 * @author Administrator
 * 
 */
public class HNGirl implements Girl {

	@Override
	public void drawWomen() {
		System.out.println("新年系列的女孩子");
	}

}

*现在创建好了节日系列的男孩女孩人物,需要创建一个工厂,提供给外界调用

1> 人物创建工厂:(PersonFactory.java)

package com.zy.factoryProject;

public interface PersonFactory {

	// 男孩接口
	public Boy getBoy();

	// 女孩接口
	public Girl getGirl();
}

2> 节日系列人物创建工厂,继承自人物创建工厂:(MCFactory.java)

package com.zy.factoryProject;

/**
 * 圣诞系列加工厂
 * 
 * @author Administrator
 * 
 */
public class MCFactory implements PersonFactory {

	@Override
	public Boy getBoy() {
		return new MCBoy();
	}

	@Override
	public Girl getGirl() {
		return new MCGirl();
	}

}

package com.zy.factoryProject;

/**
 * 新年系列加工厂
 * 
 * @author Administrator
 * 
 */
public class HNFactory implements PersonFactory {

	@Override
	public Boy getBoy() {
		return new HNBoy();
	}

	@Override
	public Girl getGirl() {
		return new HNGirl();
	}

}

3> 客户端调用测试:

		PersonFactory pf = new MCFactory();
		Girl girl = pf.getGirl();
		girl.drawWomen();


工厂方法模式和抽象工厂模式的对比:

1>工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成  是工厂模式的推广
2>工厂方法模式用来创建一个产品的等级结构,而抽象工厂模式是用来创  建多个产品的等级结构
3>工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类

工厂模式常见的应用:
JDBC:

  对各种数据库提供统一的访问接口,客户端决定需要那种数据库就由数据   操作工厂生产对应的数据连接.



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值