首先设计模式分为三大类:
工厂模式分为:简单工厂模式、工厂方法模式和抽象工厂模式。
1 简单工厂模式:
实例化对象的时候不再使用 new Object()形式,只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象。是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
具体实现如下:
a.定义一个Animal类和其下的抽象方法eat():
public abstract class Animal {
public abstract void eat();
}
b. 创建Dog和Cat 继承extent Animal类
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog eat meat");
}
}
public class cat extends Animal {
@Override
public void eat() {
System.out.println("cat eat ll");
}
}
c. 定义一个AnimalFactory 类
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019091916213792.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1c2VucXVhbg==,size_16,color_FFFFFF,t_70)
2 工厂模式
简单工厂模式的缺点是:如果需要创建很多对象,就要在这个简单工厂类里编写很多个方法,每个方法都有相应的业务代码,每次增加子类或者删除子类对象的创建都需要打开这简单工厂类来进行修改。
而这个时候就需要工厂模式了,原理是把原本会因为业务代码而庞大的简单工厂类,拆分成了一个个的子工厂类,这些子工厂类都实现于一个抽象接口。
步骤是先定义一个工厂接口,再根据需求定义子工厂类实现工厂接口其实现如下:
a.先定义一个Factory接口:
public interface Factory {
public Animal creatAnimal() {
}
}
b. 再定义子工厂类DogFactory和CatFactory:
public class DogFactory implements Factory {
@Override
public Animal creatAnimal() {
return new Dog();
}
}
CatFactory 定义类似...
c 再定义Dog 类继承DogFactory
工厂方法模式的缺点是每增加一个产品类,就需要增加一个对应的工厂类,增加了额外的开发量.
参考链接:添加链接描述