java设计模式之工厂模式

这一节就说下工厂模式,实例代码的构建环境是学习雷锋同志的优良品质。

1。学习雷锋好榜样

package com.yjck.factory;
/**
 * 雷锋的优良品质
 */
public class LeiFeng {
	public void sweep(){
		System.out.println("扫地");
	}
	public void wash(){
		System.out.println("洗衣");
	}
	public void buyRice(){
		System.out.println("买米");
	}
}

 

2。既然雷锋同志是好同志,那我们就应该进行工厂化作业,大批量生产雷锋

package com.yjck.factory;
/**
 * 工厂类,负责造雷锋
 */
public interface IFactory {
	public LeiFeng createLF();
}

3。雷锋同志本人是位伟大的人民解放军,可是我们学校雷锋的人有好多职业呀,比如学生,社区志愿者等等,那我们就让大学生的车间来生产大学生雷锋,让社区志愿者的车间来生产志愿者雷锋。

package com.yjck.factory;
/**
 * 学习雷锋的大学生工厂
 */
public class UndergraduateFactory implements IFactory {
	/**
	 * 制造学习雷锋的大学生
	 */
	public LeiFeng createLF() {
		return new Undergraduate();
	}

}

 

package com.yjck.factory;

public class VolunteerFactory implements IFactory {
	/**
	 * 制造学习雷锋的社区志愿者
	 */
	public LeiFeng createLF() {
		return new Volunteer();
	}

}

 

4。工厂都有了,该我们生产的雷锋同志出来了

package com.yjck.factory;
/**
 * 学习雷锋的大学生
 */
public class Undergraduate extends LeiFeng {

}


package com.yjck.factory;
/**
 * 学习雷锋的社区志愿者
 */
public class Volunteer extends LeiFeng {

}

 

5。start

package com.yjck.factory;

public class Run {
	/**
	 * 工厂模式的客户端
	 */
	public static void main(String[] args) {
		/**
		 * 工厂先生产一个造大学生的工厂,
		 */
		IFactory factory = new UndergraduateFactory();
		/**
		 * 大学生工厂制造一个学习雷锋的大学生
		 */
		LeiFeng student = factory.createLF();
		student.buyRice();
		student.wash();
		student.sweep();
	}
	/**
	 * *****以下是对工厂模式的认识******
	 * 和简单工厂模式相比,工厂模式的改进主要有以下几个方面
	 * 1。将实例化对象的时间推后,
	 * 2。实现了扩展开放,修改关闭原则,原来在简单工厂模式中,我们不但
	 * 要增加具体的实现类,还要在工厂方法里修改new的过程,现在,只需要
	 * 创建实现类,和该实现类的生产工厂。
	 * 这样的改写的缺点在于多出了一个生产工厂,没增加一个类型的实现类,就要
	 * 增加一个生产这个类型的工厂
	 */
}

 

你可能感兴趣的:(java,设计模式,制造)