架构师训练营第三周作业
作业一:
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
from django.contrib.auth import authenticate, login
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
from django.views.generic.base import View
from .models import UserProfile
class CustomBackend(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user=UserProfile.objects.get(Q(username=username) | Q(email=username))
if user.check_password(password):
return user
except Exception as e
return None
class LoginView(View):
def get(self, request):
return render(request, "login.html", {})
def post(self, request):
login_form = LoginForm(request.POST)
pre_check = login_form.is_valid()
if pre_check:
user_name = request.POST.get("username", "")
if UserProfile.objects.filter(email=user_name):
return render(request, "register.html", {"register_form": register_form, "msg": "用户已经存在"})
pass_word = request.POST.get("password", "")
user = authenticate(username=user_name, password=pass_word)
if user is not None:
login(request, user)
return render(request, "index.html")
else:
return render(request, "login.html", {"msg":u"用户名或密码错误"})
else:
return render(request, "login.html", {"login_form":login_form})
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(required=True)
password = forms.CharField(required=True, min_length=5)
作业二:根据当周学习情况,完成一篇学习总结
1 JUnit 设计模式 可重复的解决方案
创建模式:对类的实例化过程进行抽象,解耦
结构模式:将类或者对象组合在一起形成更大的结构
行为模式:对在不同的对象之间划分职责和算法的抽象化,如何对行为进行抽象,解耦
如何写单元测试
单元测试如何执行
2 模式方法的形式
抽象方法
具体方法
钩子方法
3 参数化的单元测试
4 组合模式 一种对象的结构模式
5 装饰器模式
Java Servlet 中的应用
同步化装饰器
Java I/O 类库简介
流的对称性
版权声明: 本文为 InfoQ 作者【大丁💸💵💴💶🚀🐟】的原创文章。
原文链接:【http://xie.infoq.cn/article/909ad10ead132d733a49f415c】。未经作者许可,禁止转载。
评论