工厂模式的产品角色和简单工厂并没有区别。变化就是在工厂角色那。将具体创建产品的工作放到子工厂进行。这样就便于进行扩展了。
public interface IProduct {
public void desc();
}
public class ProductA implements IProduct {
public void desc() {
//excute;
}
}
public class ProductB implements IProduct {
public void desc() {
//excute;
}
}
public interface IFactory {
public IProduct factory();
}
public class FactoryA implements IFactory {
public IProduct factory() {
return new ProductA();
}
}
public class FactoryB implements IFactory {
public IProduct factory() {
return new ProductB();
}
}
个人觉得如果工厂的factory方法如果是静态的也可以阿。为什么不呢?但是接口是无法申明static的方法的。只能用类或抽象类来做。不知道还有没有更好的方法。
public abstract class IFactory {
public static IProduct factory(){return null;};
}
public class FactoryA extends IFactory {
public static IProduct factory() {
return new ProductA();
}
}
public class FactoryB extends IFactory {
public static IProduct factory() {
return new ProductB();
}
}