设计模式(二)---工厂模式

工厂模式(factory)
涉及到4个角色:抽象工厂类角色,具体工厂类角色,抽象产品类角色和具体产品类角色。
抽象工厂类角色使用接口或者父类来描述工厂的行为,
具体工厂类角色负责创建某一类型的产品对象。
抽象产品类可以使用接口或者父类来描述产品对象的行为特征。
具体产品类就是某一具体的对象。


工厂模式不同于静态工厂模式的地方:
工厂模式在工厂类也实现了多态,而不仅仅是在产品对象上实现多态。
它可以应对不同类型的产品对应一种具体的工厂。


其设计模式如下:


抽象工厂类  IFactory 

package org.test.design.f;

/**
 * 
 * @author lushuaiyin
 *
 */
public interface IFactory {
	IProduct createProduct();
}

具体工厂类  CarFactory   ComputerFactory   

package org.test.design.f;

public class CarFactory implements IFactory {

	public IProduct createProduct() {
		return new Car();
	}

}



package org.test.design.f;

public class ComputerFactory implements IFactory {

	public IProduct createProduct() {
		return new Computer();
	}

}

抽象产品类  IProduct

package org.test.design.f;

public interface IProduct {
	void work();
}

具体产品类  Car  Computer  

package org.test.design.f;

public class Car implements IProduct{

	public void work() {
		System.out.println("I am car.");
	}

}

package org.test.design.f;

public class Computer implements IProduct{
	public void work() {
		System.out.println("I am Computer.");
	}
}


测试:

package org.test.design.f;

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		IFactory carFactory=new CarFactory();
		IProduct car=(IProduct)carFactory.createProduct();
		car.work();
		
		IFactory pcFactory=new ComputerFactory();
		IProduct pc=(IProduct)pcFactory.createProduct();
		pc.work();
	}

}
/*打印
I am car.
I am Computer.
 */







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值