单例模式,装饰者模式,工厂模式,大白话解释

本文深入浅出地解析了单例模式、装饰者模式及工厂模式。单例模式确保类只有一个实例,节省内存并避免资源冲突;装饰者模式增强现有功能而不修改其结构,灵活扩展功能;工厂模式提供创建对象的统一接口,隐藏创建细节。

2分钟看懂 单例模式,装饰者模式,工厂模式

单例模式:

用我的话说,就是一次只能创建一个这个类,打个比方,比如你new 一个String 对象 ,你可以写 String a = “1”, String b = “2”,String c = “3”. … 理论上你可以一直这样new下去,单例模式就不同了 , 一般单例模式都会有一个获取对象的方法,首先 单例模式你不能new 如果你想获得一个单例的对象 你只能通过他内部提供的方法获取,但只能获取一个,这样的话在你的内存中就只有一个实例,减少了内存的开销,避免了对资源的多重占用
这里就给大家一个饿汉式的demo
public class danli {

	/*
	 *	饿汉式 
	 */
	
	private static danli danli = new danli();
	
	private void danli(){};
	
	public danli getDanli(){
		return danli;
	}	
	
}

装饰者模式:

用我的话说,见名知意,你可以把装饰者想象成一个装备,就跟你打LOL一样,你的类就是你的英雄,加了装饰类你的方法会变得更强,换句话说 如果你想让你的方法变得更强,但是你有不想改变你的这个方法(有些时候不太方便直接改方法),给你的方法,加件装备吧。

工厂模式:

两个武林高手,张三专用剑,李四专用刀,工厂模式呢,就像是一个小叮当,把剑和刀都装进口袋,他们都可以带着小叮当行走江湖,遇到需要用剑解决的敌人,小叮当拿出剑来对敌,遇到需要用刀解决的敌人,小叮当拿出刀来对敌。说到这里聪明的朋友想必已经明白,小叮当就相当于一个接口,用剑的张三和用刀的李四都是实现了小叮当接口的实现类,当某些特殊情况,例如你不知道请求的接口是需要用刀还是用剑的来解决的时候,你就可以直接用小叮当来处理请求,这样就成了一个简单的工厂模式
### Django MTV模式详解 Django 是一个基于 Python 的高级 Web 框架,采用了经典的 **MTV(Model-Template-View)** 设计模式。以下是对其核心组成部分的详细说明: #### 1. Model(模型) 模型是数据的核心表示形式,主要负责与数据库交互。它是应用程序的数据层,定义了如何存储、检索和更新数据[^1]。 在 Django 中,模型是一个 Python 类,继承自 `django.db.models.Model`,并通过字段属性描述表结构。例如: ```python from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) ``` 这段代码定义了一个名为 `Article` 的模型,对应数据库中的表格,包含三个字段:标题 (`title`)、内容 (`content`) 和创建时间 (`created_at`)。 --- #### 2. Template(模板) 模板是 HTML 文件,用于展示数据给用户。它是一种前端表现形式,允许嵌入动态变量和逻辑控制语句[^2]。 Django 提供了一套强大的模板引擎,支持条件判断、循环以及其他常用语法。例如: ```html <!DOCTYPE html> <html> <head> <title>{{ article.title }}</title> </head> <body> <h1>{{ article.title }}</h1> <p>{{ article.content }}</p> </body> </html> ``` 在这个例子中,`{{ article.title }}` 和 `{{ article.content }}` 是占位符,会被实际数据替换。 --- #### 3. View(视图) 视图是连接模型和模板的关键组件,负责处理用户的请求并返回响应。它充当控制器的角色,决定显示什么内容以及如何显示[^3]。 视图通常是 Python 函数或类,接收 `HttpRequest` 对象作为输入,并返回 `HttpResponse` 或渲染后的模板。例如: ```python from django.shortcuts import render from .models import Article def article_detail(request, id): article = Article.objects.get(id=id) return render(request, 'article.html', {'article': article}) ``` 此代码片段展示了如何查询指定 ID 的文章,并将结果传递给模板进行渲染。 --- ### 总结 MTV 模式的本质在于分离关注点,使开发人员能够专注于各自的任务而不互相干扰。模型管理数据,模板负责呈现界面,视图协调两者之间的关系[^4]。这种分层架构提高了代码的可维护性和扩展性。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值