feat: 工厂方法模式
This commit is contained in:
commit
deabc84194
41
pom.xml
Normal file
41
pom.xml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.2.12.RELEASE</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
<groupId>com.pnkx</groupId>
|
||||||
|
<artifactId>design-patterns</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<name>design-patterns</name>
|
||||||
|
<description>design-patterns</description>
|
||||||
|
<properties>
|
||||||
|
<java.version>8</java.version>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.pnkx.designpatterns;
|
||||||
|
|
||||||
|
import com.pnkx.designpatterns.factorymethod.AnimalFactory;
|
||||||
|
import com.pnkx.designpatterns.factorymethod.model.Animal;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class DesignPatternsApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// 使用工厂类创建不同的 Animal 对象
|
||||||
|
Animal dog = AnimalFactory.createAnimal("dog");
|
||||||
|
dog.sound();
|
||||||
|
Animal cat = AnimalFactory.createAnimal("cat");
|
||||||
|
cat.sound();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.pnkx.designpatterns.factorymethod;
|
||||||
|
|
||||||
|
import com.pnkx.designpatterns.factorymethod.model.Animal;
|
||||||
|
import com.pnkx.designpatterns.factorymethod.model.Cat;
|
||||||
|
import com.pnkx.designpatterns.factorymethod.model.Dog;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AnimalFactory
|
||||||
|
*
|
||||||
|
* @author 裴浩宇
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/10/17 13:58
|
||||||
|
* @description 动物工厂类
|
||||||
|
*/
|
||||||
|
public class AnimalFactory {
|
||||||
|
// 根据传入的参数创建具体的动物类对象
|
||||||
|
public static Animal createAnimal(String type) {
|
||||||
|
if (type.equalsIgnoreCase("dog")) {
|
||||||
|
return new Dog();
|
||||||
|
} else if (type.equalsIgnoreCase("cat")) {
|
||||||
|
return new Cat();
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Invalid animal type: " + type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.pnkx.designpatterns.factorymethod.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Animal
|
||||||
|
*
|
||||||
|
* @author 裴浩宇
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/10/17 13:57
|
||||||
|
* @description 动物抽象类
|
||||||
|
*/
|
||||||
|
public abstract class Animal {
|
||||||
|
// 声音
|
||||||
|
public abstract void sound();
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.pnkx.designpatterns.factorymethod.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cat
|
||||||
|
*
|
||||||
|
* @author 裴浩宇
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/10/17 13:57
|
||||||
|
* @description 猫咪类
|
||||||
|
*/
|
||||||
|
public class Cat extends Animal {
|
||||||
|
@Override
|
||||||
|
public void sound() {
|
||||||
|
System.out.println("喵喵喵");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.pnkx.designpatterns.factorymethod.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dog
|
||||||
|
*
|
||||||
|
* @author 裴浩宇
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023/10/17 13:58
|
||||||
|
* @description 描述
|
||||||
|
*/
|
||||||
|
public class Dog extends Animal {
|
||||||
|
@Override
|
||||||
|
public void sound() {
|
||||||
|
System.out.println("汪汪汪");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user