工厂设计模式

1.什么是工厂设计模式

就是创建者与调用者的分离,把创建对象具体过程屏蔽隔离起来,最终提高了代码的灵活性

1.1工厂模式分类

  • 简单工厂
    生产同一等级结果中任意产品,若增加新产品需修改已有代码
    缺点就是会违反开闭原则(对扩展开放,对修改封闭)
  • 工厂方法
    生产同一等级结果中固定产品,支持增加任意产品
  • 抽象工厂
    生产不同产品族的全部产品,不支持增加新产品,支持增加产品组

2.简单工厂案例

2.1测试类

1
2
3
4
5
6
7
8
9
public class AnimalsTest {
public static void main(String[] args) {
//直接类名.调用AnimalsFactory里面的方法即可
Dog d = (Dog) AnimalsFactory.createAnimal("dog");
d.eat();
Cat c = (Cat) AnimalsFactory.createAnimal("cat");
c.eat();
}
}

2.2动物类与子类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public abstract class Animals {
public abstract void eat();
}

class Cat extends Animals {

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

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

2.2 造动物的类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class AnimalsFactory {
//如果使用方法需要定于很多方法,复用写太差
/*public static Dog createDog(){
return new Dog();
}
public static Cat createCat(){
return new Cat();
}*/


//改进直接做一个返回值为Animals的方法,内部进行判断,提高复用性
public static Animals createAnimal(String name) {
//判断条件 满足条件时候 返回对应参数
if ("dog".equals(name)) {
return new Dog();
}else if ("cat".equals(name)){
return new Cat();
}else{
return null;
}
}
}

工厂设计模式
http://example.com/2022/04/20/Java初级部分/DesignPattern/工厂设计模式/
Author
John Doe
Posted on
April 20, 2022
Licensed under