finalcola 2010-04-02
public class LeiFeng { public void Sweep(){ System.out.println("扫地"); } public void Wash(){ System.out.println("洗衣"); } public void BuyRice(){ System.out.println("买米"); } }
public class Undergraduate extends LeiFeng { }
public class Volunteer extends LeiFeng { }
public interface IFactory { LeiFeng CreateLeiFeng(); }
public class UndergraduateFactory implements IFactory { @Override public LeiFeng CreateLeiFeng() { return new Undergraduate(); } }
public class VolunteerFactory implements IFactory { @Override public LeiFeng CreateLeiFeng() { return new Volunteer(); } }
/** * <h1>工厂模式</h1> * QS:学雷锋 * @author xangqun * */ public class Program { /**<b>工厂模式(factory)</b> * 定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 * <br>简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 * <br>工厂方法模式实现时,客户端需要决定实例化那个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。 * 你想要加的功能,本来是改工厂类的,而现在是修改客户端。 * @param args */ public static void main(String[] args) { IFactory factory=new VolunteerFactory(); LeiFeng volunteer=factory.CreateLeiFeng(); volunteer.BuyRice(); volunteer.Wash(); volunteer.Sweep(); IFactory factory2=new UndergraduateFactory(); LeiFeng student=factory2.CreateLeiFeng(); student.BuyRice(); student.Wash(); student.Sweep(); } }