**注意:**如果对象较为简单,通过 new 即可完成创建,则不必使用工厂模式。使用工厂模式会引入一个工厂类,增加系统复杂度。
单例模式的实现
首先定义一个创建对象的接口,让其子类决定实例化哪一个具体的类
java复制代码
public interface People {
void talk();
}
创建实现接口的两个实体类。
java复制代码
//学生
public class Student implements People{
@Override
public void talk() {
System.out.println("我是一名学生");
}
}
//老师
public class Teacher implements People{
@Override
public void talk() {
System.out.println("我是一名老师");
}
}
创建一个工厂,生成基于给定信息的实体类的对象。
java复制代码
public class PeopleFactory {
public People getShape(String peopleType){
if(peopleType == null){
return null;
}
if(peopleType.equalsIgnoreCase("Teacher")){
return new Teacher();
} else if(peopleType.equalsIgnoreCase("Student")){
return new Student();
}
return null;
}
}
测试
java复制代码
public class FactoryDemo {
public static void main(String[] args) {
PeopleFactory peopleFactory = new PeopleFactory();
People people1 = peopleFactory.getShape("Teacher");
people1.talk();
People people2 = peopleFactory.getShape("Student");
people2.talk();
}
}