Java工厂模式

   工厂模式理解起来并不是很难  只要耐心看看代码 理解它的运作机理就好了。。。运用时就要看个人的灵活性了。 


   工厂是用来生产东西,但是从程序的角度讲就是 用一个工厂类来生产出你所需要的对象,这个生产出的对象可以是任意形式的 包括人,动物,水果,植物等不一定是要

机械性的东西 这是它跟现实工厂的区别之一。

  产品是由工厂生产出来的 , 在程序里我们是new出来的,而在工厂模式里我们把这个new封装在了工厂类里面,用一个统一的工厂类来统一new 出这些产品

这样就达成一个共识,虽然代码写起来会很多,但是可以扩展你整个工厂的扩展性和规范性,因为你所有的产品都是由工厂统一new出来的 而不是任意一个开放

人员知道了这个产品的类,然后要做一个产品的时候 就是  产品A a = new 产品A();这样的形式来构建。 在工厂模式里就变成了   产品 a = Factory.Creat产品A();


直接看代码了类比较多 耐心开:


这里给出了 两个产品 一个是Light电灯 一个是Battery电池  还有两个工厂 分别来制造特定的产品 Light 有分为BuleLight和 RedLight   ,Battery有分为GoodBattery


public interface Light   
{
	/*
	 * 对所有种类的电灯一个规范类
	 */
	public void doSomething();

}

public class RedLight implements Light
{
	/*
	 * 红色电灯 基础电灯基本类是想抽象方法 
	 */
	public RedLight(){
		System.out.println("Create! RedLight");
	}
	public void doSomething(){
		
	}
	

}

public class BuleLight implements Light
{
	/*
	 * 蓝色电灯 基础电灯基本类是想抽象方法 
	 */
	public BuleLight(){
		System.out.println("Create BuleLight!");
	}
	public void doSomething(){
		System.out.println("BuleLight! DoSomeThing!");
	}
}

public interface Battery
{
	/*
	 * 电池类基本类的规范
	 */
    public void doSomething();
}

public class GoodBattery implements Battery
{
/*
 * 好的电池
 */
	public GoodBattery(){
		System.out.println("Create GoodBattery");
	}
	@Override
	public void doSomething()
	{
		System.out.println("GoodBatteryt doSomething!");
	}

}



public interface AbstractFactory
{
	public Light CreateLight();
	public Battery CreateBattery();
}





public class A_Factory implements AbstractFactory
{
/*
 * A工厂制作蓝色电灯和好的电池
 */
	@Override
	public Light CreateLight()
	{
		return new BuleLight();
	}

	@Override
	public Battery CreateBattery()
	{
		return new GoodBattery();
	}

}

public class B_Factory implements AbstractFactory
{
	/*
	 * B工厂制作红色电灯和好的电池
	 */

	@Override
	public Light CreateLight()
	{
		return new RedLight();
	}

	@Override
	public Battery CreateBattery()
	{
		return new GoodBattery();
	}
	

}

public class Test
{
	public static void main(String args[])
	{
		/*
		 * 测试类
		 */
		A_Factory t = new A_Factory();
		Light bule = t.CreateLight();
		bule.doSomething();
		Battery ba = t.CreateBattery();
		ba.doSomething();
	}
}





输出结果:

                  Create BuleLight!
                  BuleLight! DoSomeThing!
                 Create GoodBattery
                 GoodBatteryt doSomething!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值