设计模式-工厂方法模式

  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");
        }
    }
    
posted @ 2019-08-16 09:34  bosslv  阅读(100)  评论(0编辑  收藏  举报