概述
一说到工厂,我们都知道它是生产某产品的场所,里边有工人、设备、技术人员等。经过一番的辛勤劳作,便会产出相应的产品。而工厂模式,顾名思义它是一种像工厂的模式,把某个对象的生产过程封装在工厂类中,根据用户的不同需求生产出不同的产品。
工厂模式
例子
//动物的最上层
public interface Animal {
void move();//移动
}
//猫类
public class Cat implements Animal {
@Override
public void move() {
System.out.println("cat--------move");
}
public void eatFish(){
System.out.println("cat-------fish");
}
}
//狗类
public class Dog implements Animal {
@Override
public void move() {
System.out.print("dog------move");
}
public void eatBone(){
System.out.println("eat------bone");
}
}
//工厂接口,用于生产动物(包括猫和狗)
public interface Provider {
Animal provider();
}
//猫工厂
public class CatProvider implements Provider {
@Override
public Animal provider() {
return new Cat();
}
}
//狗工厂
public class DogProvider implements Provider {
@Override
public Animal provider() {
return new Dog();
}
}
//客户端
Provider catprovider=new CatProvider();
Provider dogprovider=new DogProvider();
//provider a cat
Cat cat= (Cat) catprovider.provider();
//provider a dog
Dog dog=(Dog) dogprovider.provider();
优点:
- 使用此模式不用在代码中直接去new出对象,在一定程度上减少了耦合度,达到封装的效果。
- 屏蔽了对象掉创建细节和具体类
缺点:
- 当增加了新的产品,那么相应地需要增加该产品的工厂类代码。