请大家讨论一下 简单工厂和工厂方法有什么区别啊这是简单工厂 楼下有没人将他改一下 变成工厂方法啊
package edu.scut.simplefactory;public interface IProduct {
public void produce();
}class ProductA implements IProduct{
public void produce(){
System.out.println("i am a productA!");
}
}class ProductB implements IProduct{
public void produce(){
System.out.println("i am a productB!");
}
}class SimpleFactory{
//注意 返回类型为抽象产品角色
public static IProduct creator(String s){
if("productA".equals(s)){
return new ProductA();
}
if("productB".equals(s)){
return new ProductB();
}
return null;
}
}class Client{
public static void main(String [] args){
SimpleFactory factory = new SimpleFactory();
ProductB client = (ProductB) factory.creator("productB");
client.produce();
}
}
package edu.scut.simplefactory;public interface IProduct {
public void produce();
}class ProductA implements IProduct{
public void produce(){
System.out.println("i am a productA!");
}
}class ProductB implements IProduct{
public void produce(){
System.out.println("i am a productB!");
}
}class SimpleFactory{
//注意 返回类型为抽象产品角色
public static IProduct creator(String s){
if("productA".equals(s)){
return new ProductA();
}
if("productB".equals(s)){
return new ProductB();
}
return null;
}
}class Client{
public static void main(String [] args){
SimpleFactory factory = new SimpleFactory();
ProductB client = (ProductB) factory.creator("productB");
client.produce();
}
}
public static IProduct creator(String s) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
// if("productA".equals(s)){
// return new ProductA();
// }
// if("productB".equals(s)){
// return new ProductB();
// }
// return null;
//这种也不错
Class ab = Class.forName(s);
return (IProduct)ab.newInstance();
}
}注意传递实参(s)的时候必须是已存在的类名。 SimpleFactory.creator("ProductA")
注意大小写
哈哈 谢谢 是不是应该这样啊
client = (ProductB) factory.creator("productB");
client.produce();
嘿嘿我是菜鸟,对工厂方法还在学习中。
client.produce();
嘿嘿我是菜鸟,对工厂方法还在学习中。
Father类型 变量 = 工厂方法();
IProduct client = (IProduct) factory.creator("productB");
IProduct client = factory.creator("productB");