Java设计模式--工厂方法模式

一、工厂方法模式概述

工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象。

目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象。

工厂方法模式包含四个部分:

1.抽象产品:产品对象同一的基类,或者是同一的接口。

2.具体的产品:各个不同的实例对象类

3.抽象工厂:所有的子类工厂类的基类,或是同一的接口

4.具体的工厂子类:负责每个不同的产品对象的实际创建

二、案例如下:

需求:创建Dog对象和Cat对象并分别调用它们的eat()方法。

步骤A:先定义抽象产品

public abstract class Animal {
	public abstract void eat();
}

步骤B:定义各个不同的实例对象类

public class Dog extends Animal {
	@Override
	public void eat() {
		System.out.println("狗吃肉");
	}
}

public class Cat extends Animal {
	@Override
	public void eat() {
		System.out.println("猫吃鱼");
	}
}

步骤C:定义抽象工厂

public interface Factory {
	public abstract Animal createAnimal();
}

步骤D:定义具体的工厂子类

public class DogFactory implements Factory {
	@Override
	public Animal createAnimal() {
		return new Dog();
	}
}

public class CatFactory implements Factory{
	@Override
	public Animal createAnimal() {
		return new Cat();
	}
}

在main方法中进行测试:

public class TestDemo {
	public static void main(String[] args) {
		Factory f;
		f = new DogFactory();
		Dog d = (Dog) f.createAnimal();
		d.eat();
		
		System.out.println("---------------");
		f = new CatFactory();
		Cat c = (Cat) f.createAnimal();
		c.eat();
	}
}

测试结果如下:

三、工厂方法模式优缺点:

优点
客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。
缺点
需要额外的编写代码,增加了工作量。
Java新手,若有错误,欢迎指正!

posted @ 2020-03-26 21:40  跑调大叔!  阅读(128)  评论(0编辑  收藏  举报