简单Java工厂模式
时间: 2023-12-16 10:28:03 浏览: 46
简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。简单工厂模式通过将对象的创建委托给一个工厂类来实现,从而将对象的创建与使用分离。以下是简单Java工厂模式的示例:
1.定义一个接口Shape,包含draw方法。
```java
public interface Shape {
void draw();
}
```
2.定义三个实现类Circle、Rectangle和Square,实现Shape接口并重写draw方法。
```java
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle.draw()");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle.draw()");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Square.draw()");
}
}
```
3.定义一个工厂类ShapeFactory,包含一个静态方法getShape,根据传入的参数返回不同的Shape实例。
```java
public class ShapeFactory {
public static Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
```
4.在客户端代码中,通过调用ShapeFactory的静态方法getShape来获取Shape实例,并调用draw方法。
```java
public class Client {
public static void main(String[] args) {
Shape circle = ShapeFactory.getShape("CIRCLE");
circle.draw();
Shape rectangle = ShapeFactory.getShape("RECTANGLE");
rectangle.draw();
Shape square = ShapeFactory.getShape("SQUARE");
square.draw();
}
}
```
输出结果为:
```
Circle.draw()
Rectangle.draw()
Square.draw()
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)