设计模式 --- 工厂模式
工厂模式:
对实现同一接口的不同类,用一个工厂类,根据传入的参数/调用方法/静态方法来创造不同的产品,类的对象
普通工厂模式:
public interface Person{
public void getPerson();
}
public class Student implements Person{
@Override
public void getPerson() {
// TODO Auto-generated method stub
}
}
public class Teacher implements Person{
@Override
public void getPerson() {
// TODO Auto-generated method stub
}
}
public class PersonFactory{
public Person newPerson(String person){
if(person.equals("Student")){
return new Student();
}else if(person.equals("Teacher")){
return new Teacher();
}else{
System.out.println("input message is error!");
throw new RuntimeException("输入类型错误");
}
}
}
缺点: 将来对添加新的类时,需要直接改变工作方法,不好;参数也有数错误的情况
多个工厂方法
//多个工厂方法模式
public class PersonFactory1{
public Person newStudent(){
return new Student();
}
public Person newTeacher(){
return new Teacher();
}
}需要创建对象,并且版本升级添加新类时,也需要添家工厂类的方法,也不是很方便
多个静态工厂方法:
//静态方法多个工厂方法模式
public class PersonFactory2{
public static Person newStudent(){
return new Student();
}
public static Person newTeacher(){
return new Teacher();
}
}
抽象方法工厂者模式:
//抽象工厂方法模式
public interface Factory1{
public Person newPerson();
}
public class StudentFactory implements Factory1{
@Override
public Person newPerson() {
// TODO Auto-generated method stub
return new Student();
}
}
public class TeacherFactory implements Factory1{
@Override
public Person newPerson() {
// TODO Auto-generated method stub
return new Teacher();
}
}
以上步骤一步一步升级为现在的最优模式,将来有新的类添加时,只需要继承同一的工厂接口即可,不需要对源代码进行修改