今日内容回顾

设计模式

简介

设计模式指的是在IT行业很多前辈针对固定的一些问题设计出来固定的解决套路。

其中设计模式总共有23种

  • 设计模式的分类

    将其分为三大类,创建型、结构型、行为型。

设计模式之单列模式

在单列模式下类加括号调用多次只允许产生一个对象

如下:

# 正常情况下,类名加括号是实例化产生对象,执行几次就会产生几个不同的对象
class Myclass:
    pass
obj1 = Myclass()
obj2 = Myclass()
obj3 = Myclass()
print(id(obj1), id(obj2), id(obj3))  # 2263190030944 2263190494080 2263189844464

#使用元类干预对象的创建过程,实现单列模式。
class MyMeTaClass(type):
    # 记录类是否已经创建了对象
    instance = None

	def __call__(self, *args, **kwargs):
     	if self.instance:
          return self.instance
        # 获取空对象
        obj = super().__call__(*args, **kwargs)
        # 保存对象
        self.instance = obj
        # 返回空对象
		  return obj

class Single(metaclass=MyMeTaClass):
    def __init__(self, name):
       self.name = name

obj1 = Single('jason')
obj2 = Single('kevin')
obj3 = Single('tony')
print(id(obj1), id(obj2), id(obj3))
print(obj1.name)
print(obj2.name)
print(obj3.name)

pickle模块

简介

pickle模块与json模块很像,都是用来序列化、反序列化的。

并且pickle模块支持python所有的数据类型,但是pickle模块不支持跨语言传输,兼容性不好。

实际应用

为了方便的编写选课系统,需要将对象保存到文件。所有需要用该模块。

class MyClass:
    def __init__(self, name):
        self.name = name

    def choice_course(self):
        print('%s正在选课' % self.name)


obj = MyClass('jason')
# 需求:将对象保存到文件 并且将来取出之后还可以通过句点符随意调用

# 常规的文件操作不行
with open(r'a.txt','w',encoding='utf8') as f:
    f.write(obj) # 报错
    
# json模块也不行
import json
with open(r'a.txt','w',encoding='utf8') as f:
   f.write(json.dumps(obj))  # 报错

# pickle模块可以解决,存取都没问题。
import pickle
with open(r'a.txt', 'wb') as f:
    f.write(pickle.dumps(obj))
    pickle.dumps(obj, f)
with open(r'a.txt', 'rb') as f:
    data = pickle.load(f)
print(data)
print(data.name)
data.choice_course()

选课系统

选课系统项目分析
选课系统
      角色:学校、学员、课程、讲师
要求:
    1. 创建北京、上海 2 所学校
    2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
    3. 课程包含,周期,价格,通过学校创建课程 
    4. 通过学校创建班级, 班级关联课程、讲师5. 创建学员时,选择学校,关联班级
    5. 创建讲师角色时要关联学校, 
    6. 提供三个角色接口  
     6.1 学员视图 可以注册 交学费 选择班级,  
     6.2 讲师视图, 讲师可管理自己的班级 上课时选择班级 查看班级学员列表 修改所管理的学员的成绩 
     6.3 管理视图,创建讲师, 创建班级,创建课程
    7. 上面的操作产生的数据都通过pickle序列化保存到文件里
功能分析
  • 管理员功能(核心功能)

    1. 注册
    2. 登录
    3. 创建讲师
    4. 创建学校
    5. 创建课程
  • 讲师功能

    1. 登录
    2. 选择教授课程
    3. 查看教授课程
    4. 管理教授课程
    5. 批改学生作业
  • 学生功能

    1. 注册
    2. 登录
    3. 选择学校
    4. 选择课程
    5. 查看分数

系统架构设计

三层架构
功能展示层
src.py
admin_view.py
teacher_view.py
student_view.py
核心逻辑层
admin_interface.py
teacher_interface.py
student_interface.py
数据处理层
db_hanlder.py
model.py
posted @ 2022-08-01 15:16  瓮小辉  阅读(29)  评论(0)    收藏  举报