2.工厂方法模式
程序员文章站
2022-03-09 19:11:50
...
抽象产品类
package com.lw.pd.FactoryMethod;
/*
* 抽象产品类
*/
public abstract class Product {
//产品类的公共方法
public void method1(){
//业务逻辑处理
}
//抽象方法
public abstract void method2();
}
具体产品类1
package com.lw.pd.FactoryMethod;
public class CreateProduct1 extends Product {
@Override
public void method2() {
// TODO Auto-generated method stub
//业务逻辑处理
}
}
具体产品类2
package com.lw.pd.FactoryMethod;
public class CreateProduct2 extends Product {
@Override
public void method2() {
// TODO Auto-generated method stub
//业务逻辑处理
}
}
抽象工厂类
package com.lw.pd.FactoryMethod;
/*
* 抽象工厂类
*/
public abstract class Creator {
/*
* 创建一个产品对象,其输入参数类型可以自行设置
* 通常为String,Enum,Class等,也可为空
*/
public abstract <T extends Product> T CreateProduct(Class<T> c);
}
具体工厂实现类
package com.lw.pd.FactoryMethod;
/*
* 具体工厂实现类
*/
public class ConcreteCreator extends Creator {
@Override
public <T extends Product> T CreateProduct(Class<T> c) {
// TODO Auto-generated method stub
Product product = null;
try {
product =(Product) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
//异常处理
}
return (T)product;
}
}
场景类
package com.lw.pd.FactoryMethod;
/*
* 场景类
*/
public class Client {
Creator creator = new ConcreteCreator();
Product product1 = creator.CreateProduct(CreateProduct1.class);
Product product2 = creator.CreateProduct(CreateProduct2.class);
//继续业务逻辑
}
转载于:https://my.oschina.net/ven01/blog/714960
上一篇: 调用别人接口返回406