设计模式-工厂方法模式

强颜欢笑 提交于 2019-11-27 12:06:59
  1. 定义
    工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
  2. 代码实例

    abstract class AbstractPersonFactory {
    
        private Person person;
    
        // 工厂方法,在具体子类实现
        abstract public Person createPerson();
    
        public void boo() {
            // 具体类型由工厂方法指定
            person = createPerson();
            person.foo();
        }
    }
    
    /**
     * 工厂子类
     */
    class StudentFactory extends AbstractPersonFactory {
    
        // 决定创建的对象
        @Override
        public Person createPerson() {
            return new Student();
        }
    
        // 测试
        public static void main(String[] args) {
            StudentFactory studentFactory = new StudentFactory();
            studentFactory.boo();
        }
    }
    
    
    class Person {
        public void foo() {
            System.out.println("I am a person");
        }
    }
    
    class Teacher extends Person {
        @Override
        public void foo() {
            System.out.println("I am a teacher");
        }
    }
    
    class Student extends Person {
        @Override
        public void foo() {
            System.out.println("I am a student");
        }
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!