设计模式 --- 工厂模式

工厂模式:
对实现同一接口的不同类,用一个工厂类,根据传入的参数/调用方法/静态方法来创造不同的产品,类的对象

普通工厂模式:

 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();
        }

    }

以上步骤一步一步升级为现在的最优模式,将来有新的类添加时,只需要继承同一的工厂接口即可,不需要对源代码进行修改

posted @ 2015-09-30 23:04  帅气好男人_jack  阅读(3)  评论(0编辑  收藏  举报  来源