抽象工厂模式

java设计模式大体分为23种设计模式,直接通过例子学习设计模式,更易于理解和思考其中的原理和作用,以下给出抽象工厂模式 的demo:


MainRun.java类,是程序运行入口,含有main方法。大伙认真的看main方法上面的注释喔,是博主对此模式的总结和分析。(附 advantage是表示使用此模式的优势,disadvantage是此模式的不足和缺点,use scene是表示此模式的使用场景。)

package cn.cat.design.mode.factory.abstracted;

public class MainRun {

	/**抽象工厂模式:是简单工厂模式的抽象化。对工厂与生成的产品都进行抽象(抽象类或接口)。
	 * advantage: 客户需要不同的产品,只需要使用不同工厂的实现类即可。
	 * disadvantage:会引起大量的接口或抽象类,工厂模式会变得更加复杂化。
	 * use scene:当获取需要的是一个产品簇,而非单一一个产品时。
	 * @param args
	 */
	public static void main(String[] args) {
		//根据客户的需要,只需要更换不同的工厂实现类即可。
//		ComputerComponentFactory factory = new AmdComputerComponentFactory();
		ComputerComponentFactory factory = new InterComputerComponentFactory();
		CPU cpu = factory.createCPU();
		MainBoard mainBoard = factory.createMainBoard();
		System.out.println("cpu.stitch:"+cpu.getStitch() + "  mainBoard.cpuSlotStitch:" + mainBoard.getCPUSlotStitch());
	}

}



CPU.java

package cn.cat.design.mode.factory.abstracted;

/**
 *电脑CPU
 * @author Cat(gwj)
 * date 2015-8-8
 * time 下午5:20:32
 */
public interface CPU {
	/**获取cpu针脚
	 * @return
	 */
	public int getStitch ();
}


MainBoard.java

package cn.cat.design.mode.factory.abstracted;

/**
 * 电脑主板
 * @author Cat(gwj)
 * date 2015-8-8
 * time 下午5:20:41
 */
public interface MainBoard {
	/**获取主板cpu插槽的针脚
	 * @return
	 */
	public int getCPUSlotStitch ();
}


ComputerComponentFactory.java

package cn.cat.design.mode.factory.abstracted;

public interface ComputerComponentFactory {
	public CPU createCPU();
	public MainBoard createMainBoard();
}



AmdComputerComponentFactory.java

package cn.cat.design.mode.factory.abstracted;

public class AmdComputerComponentFactory implements ComputerComponentFactory {

	@Override
	public CPU createCPU() {
		return new AmdCPU();
	}

	@Override
	public MainBoard createMainBoard() {
		return new AmdMainBoard();
	}

}


AmdCPU.java

package cn.cat.design.mode.factory.abstracted;

public class AmdCPU implements CPU {

	@Override
	public int getStitch() {
		return 36;
	}

}



AmdMainBoard.java
package cn.cat.design.mode.factory.abstracted;

public class AmdMainBoard implements MainBoard{

	@Override
	public int getCPUSlotStitch() {
		return 36;
	}

}



InterComputerComponentFactory.java

package cn.cat.design.mode.factory.abstracted;

public class InterComputerComponentFactory implements ComputerComponentFactory {

	@Override
	public CPU createCPU() {
		return new InterCPU();
	}

	@Override
	public MainBoard createMainBoard() {
		return new InterMainBoard();
	}

}



InterCPU.java

package cn.cat.design.mode.factory.abstracted;

public class InterCPU implements CPU {

	@Override
	public int getStitch() {
		return 42;
	}

}



InterMainBoard.java

package cn.cat.design.mode.factory.abstracted;

public class InterMainBoard implements MainBoard{

	@Override
	public int getCPUSlotStitch() {
		return 42;
	}

}



------------------------------------------------------------demo end--------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值