单例模式实现的多种方式与选课系统

单例模式实现的多种方式

方式一

1.实例化一个的对象,要用时直接import导如这个对象,而不是再实例化一个,这样就做到了单例模式了,每次都用的是同一个对象

实现单例模式第二种方法:

2.我们知道,当我们实例化一个对象时,是先执行了类的__new__方法(我们没写时,默认调用object.new),实例化对象;然后再执行类的__init__方法,对这个对象进行初始化,所有我们可以基于这个,实现单例模式。

单例1.png

方式三

通过装饰器实现单例模式: 任意一个类使用了该装饰器就会变成一个单例模式的类;

单例2.png

单例3.png

单例模式的优点:

1.节约内存,因为不管实例化多少个 对象都实际指向一个内存地址;
2.多个地方创建的实例他们的属性互动,如下例子:我们只给实例化对象t1添加了一个name属性,而t2和t3都拥有了这个属性,这就给我们节约了很多的时间

单例4.png

pickle序列化模块

优势:能够序列化python中所有的类型
缺陷:只能够在python中使用 无法跨语言传输 
 
需求:产生一个对象并保存到文件中 取出来还是一个对象
    
"""
需求:产生一个对象并保存到文件中 取出来还是一个对象
"""
class C1:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def func1(self):
        print('from func1')

    def func2(self):
        print('from func2')

obj = C1('jason', 18)

import json
with open(r'a.txt','w',encoding='utf8') as f:
    json.dump(obj, f)
import pickle
with open(r'a.txt', 'wb') as f:
    pickle.dump(obj, f)
with open(r'a.txt','rb') as f:
    data = pickle.load(f)
print(data)
data.func1()
data.func2()
print(data.name)

选课系统分析

选课系统:
角色:学校、学员、课程、讲师
要求:
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.学生功能
	注册功能
 	登录功能
 	选择学校
 	选择课程
 	查看课程分数

选课系统架构设计

三层架构
	参考群内截图
与ATM架构设计的差异
1.第一层做分层展示
2.第三层创建models.py存储所有的类 只有该py文件内的代码有资格调用db_handler

选课系统目录搭建

目录.png

选课系统功能搭建

空函数 循环 功能字典

功能.png

posted @ 2022-11-09 17:28  jntmja  阅读(43)  评论(0)    收藏  举报