工厂方法模式

模式定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

模式结构

模式结构

代码实现

public interface Human {
    void print();
}

public class Man implements Human {
    public void print() {
        System.out.println("我是男人");
    }
}

public class Woman implements Human {
    public void print() {
        System.out.println("我是女人");
    }
}

public abstract class HumanFactory {
    public abstract Human createHuman();
}

public class ManFactory extends HumanFactory {
    @Override
    public Human createHuman() {
        return new Man();
    }
}

public class WomanFactory extends HumanFactory {
    @Override
    public Human createHuman() {
        return new Woman();
    }
}

public class Client {
    public static void main(String[] args) {
        HumanFactory manFactory = new ManFactory();
        Human man = manFactory.createHuman();
        man.print();
    }
}

模式的优缺点

优点

  1. 可以在不知道具体的类的情况下编程。

  2. 在系统增加新的产品时,只需要添加一个具体产品类和对应的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”。

缺点

具体产品对象和工厂方法耦合性。

思考

模式本质:延迟到子类选择实现。

开发中的应用场景

  1. 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况可以选用工厂方法模式,
    把创建对象的工作延迟到子类中去实现。

  2. 如果一个类本身就希望由它的子类来创建所需的对象的时候,应该使用工厂方法模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容