工厂模式是一个在软件开发中用来创建对象的设计模式。
工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。
为了实现此方法,需要创建一个工厂类并返回所需对象。
当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。
简短的说,当以下情形可以使用工厂模式:
1.不知道用户想要创建什么样的对象
2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。
案例:
"""
工厂模式:
根据需求产生对象。
"""
from typing import Any
class Clothes:
"""服装工厂类"""
def __init__(self,name):
self.name = name
def create(self):
pass
class Lovely(Clothes):
def __init__(self, name):
super().__init__(name)
def create(self):
print(f"{self.name} 生产 汉服")
class Cool(Clothes):
def __init__(self, name):
super().__init__(name)
def create(self):
print(f"{self.name} 生产 酷酷的、帅")
class Lipstick(Clothes):
def __init__(self, name):
super().__init__(name)
def create(self):
print(f"{self.name} 生产 死亡芭比粉")
class Shoes(Clothes):
def __init__(self, name):
super().__init__(name)
def create(self):
print(f"{self.name}生产 红色高跟鞋")
class Shoes2(Clothes):
def __init__(self, name):
super().__init__(name)
def create(self):
print(f"{self.name}生产 蓝色高跟鞋")
class Requirement:
"""定义一个需求类"""
@staticmethod
def creatNeed(need):
if need == "死亡芭比粉":
return Lipstick("死亡芭比粉")
elif need == "酷酷的、帅":
return Cool("酷酷的、帅")
elif need == "汉服":
return Lovely("汉服")
elif need == "红色高跟鞋":
return Shoes("红色高跟鞋")
elif need == "蓝色高跟鞋":
return Shoes2("蓝色高跟鞋")
# Requirement.creatNeed("死亡芭比粉").create()
# Requirement.creatNeed("红色高跟鞋").create()
# Requirement.creatNeed("汉服").create()
with open("create.txt","r",encoding="utf-8")as f_r:
content = f_r.read()
# print(content)
Requirement.creatNeed(content).create()
# class StudentNum:
# num = 0
#
# @classmethod
# def add_num(cls):
# cls.num += 1
#
# @classmethod
# def get_num(cls):
# return cls.num
#
# def __new__(cls) -> Any:
# StudentNum.add_num()
# return super().__new__(cls)
#
#
# class Student(StudentNum):
# def __init__(self):
# self.name = ""
# a = Student()
# b = Student()
# c = Student()
# print(StudentNum.get_num())
版权声明:本文为pxklove1214原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。