java工厂方法模式

xiaoxiao2021-02-28  45


在看下面讲解之前,最好还是先看下笔者的 简单工厂模式,因为我的例子,是有联系的;


目录

代码图解工厂方法模式优点缺点改进:


代码

工厂接口:

/** * 工厂接口,抽象出工厂具体的公有方法 */ interface Factory{ Produce factoryProduce(); }

工厂实现类:

/** * 工厂实现类 */ class PianoFactory implements Factory{ @Override public Produce factoryProduce() { return new Piano(); } } class MotorcycleFactory implements Factory{ @Override public Produce factoryProduce() { return new Motorcycle(); } }

测试类:

@Test public void Test(){ // 客户端需要制造一台钢琴 Factory factory = new PianoFactory(); Produce produce = factory.factoryProduce(); produce.method(); // 客户端制造一台摩托车 Factory factory1 = new MotorcycleFactory(); Produce produce1 = factory1.factoryProduce(); produce1.method(); }

后期添加新的类(浴缸):

/** * 浴缸类 */ class Bathtub implements Produce { @Override public void method() { System.out.println("制造出一个浴缸"); } }

浴缸工厂类:

class BathtubFactory implements Factory{ @Override public Produce factoryProduce() { return new Bathtub(); } }

测试:

// 对于后期添加的浴缸,客户端不需要改动现有的代码 Factory factory2 = new BathtubFactory(); Produce produce2 = factory2.factoryProduce(); produce2.method();

图解工厂方法模式

与 简单工厂模式 相比,工厂方法模式,更抽象一点,它把工厂也抽象出一个接口来;它让一个工厂只负责生产一种产品;


优点

简单工厂模式 的优点,继续保持,还克服了 简单工厂模式 的缺点 ;

新增产品,不需要改动现有的代码

当有新的产品需要添加进框架里面的时候,我们是不需要去改动现有的代码的;只需要写出对应的 产品类、工厂实现类;然后在API里面写上新增的产品即可 ;原有的 代码是一行都不需要改动的 ;


缺点

增加系统的负担代码量剧增一个工厂只能生产一个产品

当 API 的设计者,新增新的产品的时候,设计者自己就蛋疼的很了,每一新增一个产品,他就需要对应的写一个工厂类,导致代码量剧增;

客户端在使用的时候,每次使用一个产品类的时候,都需要调用对应的工厂类,无形之中增加了系统的负担 ;


改进:

要克服上面的缺点,就需要使用 抽象工厂模式 了 ;

转载请注明原文地址: https://www.6miu.com/read-2623240.html

最新回复(0)