我的第一篇博客,关于java简单工厂模式
程序员文章站
2022-05-19 22:06:24
...
(如有错漏之处,敬请指正)
简单工厂模式的理解
简单工厂模式就类似与现实中的工厂,能加工一类产品,例如冰淇淋工厂,传入巧克力配料,生成的就是巧克力冰淇淋,传入香草配料,生成的就是香草冰淇淋。所以在Java中,通过传入不同的参数,来获取到不同的实例就称为简单工厂模式。
首先创建一个接口
定义了动物共有的抽象信息
public interface Animal {
void eat();
void paly();
void run();
}
创建具体实现类
小猫的类实现动物的接口
public class Cat implements Animal {
private String name;
public Cat(String name) {
this.name = name;
}
@Override
public void eat() {
System.out.println(name+"正在吃饭");
}
@Override
public void paly() {
System.out.println(name+"正在玩耍");
}
@Override
public void run() {
System.out.println(name+"跑步");
}
}
小狗的类实现动物的接口
public class Dog implements Animal {
private String name;
public Dog(String name) {
this.name = name;
}
@Override
public void eat() {
System.out.println(name+"正在吃饭");
}
@Override
public void paly() {
System.out.println(name+"正在玩耍");
}
@Override
public void run() {
System.out.println(name+"跑步");
}
}
使用一般方法实现
通过直接实例化调用
public class Zoo {
public static void main(String[] args) {
Dog dog = new Dog("小狗");
Cat cat = new Cat("小猫");
dog.eat();
dog.paly();
dog.run();
cat.eat();
cat.paly();
cat.run();
}
}
结果为
小狗正在吃饭
小狗正在玩耍
小狗跑步
小猫正在吃饭
小猫正在玩耍
小猫跑步
使用简单工厂的方式
新建一个工厂类
public class AnimalFactory {
private Animal animal;
public Animal createAnimal(String name) {
switch (name) {
case "猫":
animal = new Cat(name);
break;
case "狗":
animal = new Dog(name);
break;
}
return animal;
}
}
工厂类中包含了一个Animal的接口以及一个createAnimal的方法,当外部调用此方法给工厂传入参数时,通过switch判断自动返回传入参数对应的实例
工厂类的实现
public class Zoo {
public static void main(String[] args) {
AnimalFactory animalFactory=new AnimalFactory();
Animal animal=animalFactory.createAnimal("狗");
animal.eat();
animal.paly();
animal.run();
}
}
结果为
狗正在吃饭
狗正在玩耍
狗跑步
总结
通过两种实现方式的对比可发现,第一种直接实现,客户端需要知道Dog类、Cat类。分别去实例化之后才能调用。而第二种通过简单工厂就只需要明确自己要什么实例通过工厂AnimalFactory自动装配,因此只需要知道一个AnimalFactory,通过此工厂方法createAnimal即可生成对应对应实例。