设计模式之—工厂方法模式(FactoryMethod)-Java实现

工厂方法(FactoryMethod):

定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method 使一个类的实例化延迟到其子类。

工厂方法模式,这个方法有效地解决了简单工厂模式扩展性差的问题,想要进行扩展,只需要新加类就行,不需要更改原有类,下面是一个例子:

public interface Person{        
}  
public class Student implements Person{  
}  
public class Teacher implements Person{  
}  
public interface PersonFactory{
       public Person producePerson();
}
  
public class StudentFactory implements PersonFactory {   
    @Override    
    public Person producePerson() {    
        return new Student();    
    }    
}    

public class TeacherFactory implements PersonFactory {   
    @Override    
    public  Person producePerson() {    
        return new Teacher();    
    }    
}   

public class Test {    
    public static void main(String[] args){    
        PersonFactory pf;    
        Person  p;    
        pf = new StudentFactory();    
        p = pf.producePerson();      
        //这时,p是学生对象
        pf = new TeacherFactory();    
        p = pf.producePerson();   
        //这时,p是老师的手机  
    }    

如果想要生产Farmer,只需要新加一个Farmer类,实现Person接口,再新加一个FarmerFactory,实现PersonFactory接口就行了,新加的代码如下:
public class Farmer implements Person{  
}
public class FarmerFactory implements PersonFactory {   
    @Override    
    public Person producePerson() {    
        return new Farmer();    
    }    

}

这样就实现了新加一个这个工厂产的产品,但是不会更改原有类的要求,但是,这还会有问题。在工厂方法模式中,到底生产什么,是写进了代码里(我们俗称硬代码),假如消费者这次想要Student,下次又想要Hunter了怎么办,总不可能他提一次需求我们就改一次代码吧,这样显然是不行的,因此,下面又有了抽象工厂模式(Abstract Factory)就解决了这个问题——待续



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值