创建型模式都有哪些分类?具体应用场景?demo说明
时间: 2023-06-14 07:07:11 浏览: 156
Java设计模式之创建型模式的几个小DEMO
创建型模式是设计模式中的一种,它关注如何实例化对象或者组合对象以创建新的对象。创建型模式可以分为以下几类:
1. 工厂模式:工厂模式是一种创建型模式,其目的是为客户端创建对象提供一个接口。工厂模式有三种类型:简单工厂模式、工厂方法模式和抽象工厂模式。工厂模式的应用场景包括:需要大量创建对象,而这些对象具有相似的属性和方法,需要解耦客户端和具体对象的创建过程等。
2. 建造者模式:建造者模式是一种创建型模式,它的目的是将一个复杂的对象的构建过程和它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式的应用场景包括:需要创建复杂对象,需要控制对象的创建过程,需要避免构造函数过长等。
3. 单例模式:单例模式是一种创建型模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式的应用场景包括:需要用一个共享的对象来管理全局配置信息、日志信息等,需要避免创建过多对象占用过多资源等。
4. 原型模式:原型模式是一种创建型模式,它通过复制现有的实例来创建新的实例。原型模式的应用场景包括:需要创建新对象,但是创建过程比较复杂,需要避免使用构造函数进行创建等。
下面是一个简单的demo说明工厂模式的应用。
```python
# 工厂模式示例
# 创建一个图形接口
class Shape:
def draw(self):
pass
# 创建具体图形类:圆形、矩形、正方形
class Circle(Shape):
def draw(self):
print("Circle.draw")
class Rectangle(Shape):
def draw(self):
print("Rectangle.draw")
class Square(Shape):
def draw(self):
print("Square.draw")
# 创建一个工厂类,用于创建具体的图形对象
class ShapeFactory:
def get_shape(self, shape_type):
if shape_type == 'circle':
return Circle()
elif shape_type == 'rectangle':
return Rectangle()
elif shape_type == 'square':
return Square()
# 使用工厂类创建具体的图形对象
factory = ShapeFactory()
circle = factory.get_shape('circle')
circle.draw()
rectangle = factory.get_shape('rectangle')
rectangle.draw()
square = factory.get_shape('square')
square.draw()
```
以上代码中,我们创建了一个`Shape`接口,它定义了`draw()`方法。然后,我们创建了三个具体的图形类:`Circle`、`Rectangle`和`Square`,它们分别实现了`Shape`接口中的`draw()`方法。
接着,我们创建了一个工厂类`ShapeFactory`,它有一个`get_shape()`方法,根据传入的参数返回相应的具体图形对象。在使用工厂类时,我们先创建一个工厂对象`factory`,然后使用它的`get_shape()`方法创建具体的图形对象,并调用其`draw()`方法。
这个例子中,我们使用工厂模式来创建具体的图形对象,这样客户端就不需要知道具体的图形类的创建过程,从而达到了解耦的目的。
阅读全文