Java多线程-57-工厂方法设计模式

这篇,我们来介绍工厂方法模式。工厂方法模式和前面的简单工厂模式区别就是,我们先定义一个Factory的接口,里面写一个createAnimal的方法。然后Dog就创建DogFactory工厂类,Cat就创建CatFactory工厂类。如果还有其他动物,就创建其他动物的工厂类。这样我们就不用去修改原始的Factory工厂类。这个应用,其实我们在做Selenium POM的时候用到了这种设计模式。

1.代码文件和结构

Java多线程-57-工厂方法设计模式_第1张图片

上面三个文件Animal.java和Dog.java和Cat.java代码没有改变。

Factory.java 接口内容

package samplefactory;

public interface Factory {
    public Animal createAnimal();
}

DogFactory.java

package samplefactory;

public class DogFactory implements Factory {

	@Override
	public Animal createAnimal() {
		return new Dog();
	}

}

CatFactory.java

package samplefactory;

public class CatFactory implements Factory {

	@Override
	public Animal createAnimal() {
		return new Cat();
	}

}

Test.java

package samplefactory;

public class Test {

	public static void main(String[] args) {
		DogFactory df = new DogFactory();
		Dog d = (Dog) df.createAnimal();
        d.eat();
        
        CatFactory cf = new CatFactory();
        Cat c = (Cat) cf.createAnimal();
        c.eat();
	}

}

这种工厂方法设计模式,优缺点如下

优点:
客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,
后期维护容易,增强了系统的扩展性。

缺点:
需要额外的编写代码,增加了工作量。

 

 

你可能感兴趣的:(Java多线程-57-工厂方法设计模式)