顿搜
飞过闲红千叶,夕岸在哪
类目归类
工厂模式可以动态决定将哪一个类实例化,不必事先知道每次实例化哪个类。主要解决项目中对象的实例化问题,特别是在需要大量实例化对象时,使用工厂模式可以很好的解决问题。
简单工厂模式又叫“静态工厂方法”,是类的创建模式(基于继承实现)。由一个专门的工厂对象决定创建出哪一种产品类的实例。
工厂模式的精髓:将大量有共同接口的类实例化。
简单工厂模式涉及“工厂角色”(Creator)、“抽象产品(Product)角色” 及“ 具体产品(Concrete Product)角色” 等三个角色。可以根据参数的不同返回不同类的实例
定义一个创建对象的类/接口,由这个类来封装实例化对象的行为,将变化的部分放入其中。
/*定义一个接口或者一个抽象类*/
interface A{
public void method_A();/*需要重写的方法*/
public void method_B();/*公共相同的方法,需要写实现类*/
}/*第一个实现类*/
class A1 implements A{
@Override
public void method_A(){
System.out.println("I am A1");
}
}/*第二个实现类*/
class A2 implements A{
@Override
public void method_A(){
System.out.println("I am A2");
}
}/*定义一个工厂*/
class Factory {
public static A create(String type){
A a = null;
if("A1".equals(type){
a = new A1();
}else if("A2".equals(type)){
a = new A2();
}
return a;
}
}/*测试用*/
class Test{
public static void main(Strings[] args){
A a = Factory.create(type);
if(a != null){
a.method_A();
a.method_B();
}
}
是对普通工厂模式的改进,在普通工厂模式中,如果传递的字符串参数出错,则不能正确创建对象,而多个工厂方法模式可以提供多个工厂方法,分别创建对象。
对上面的Factory进行如下改动
/*定义一个工厂*/
class Factory {
public static A createA1(){
return new A1();
}
public static A createA2(){
return new A2();
}
}测试类变为:
/*测试用*/
class Test{
public static void main(Strings[] args){
A a = Factory.createA1();
a.method_A();
a.method_B();
}
}