AI绘画-Stable Diffusion笔记
软件:Stable Diffusion
视频教程来自
https://www.bilibili.com/video/BV1As4y127HW/?spm_id_from=333.337.search-card.all.click
提示词
提示词类别
-
内容型提示词
人物主题特征:
服饰穿搭:white dress
发型发色:blonde hair,long hair
五官特点:small eyes,big mouth
面部表情:smiling
肢体动作:stretching arms,Spread legs open,Lower body nudity
场景特征:
室内、室外:indoor/outdoor
大场景:forest,city,street
小细节:tree,bush,white flower
环境光照:
白天黑夜:day/night
特定时段:morning,.sunset
光环境:sunlight,bright,dark
天空:blue sky,.starry sky
画幅视角:
距离:close-up,distant
人物比例:full body,upper body
观察视角:from above,view of back
镜头类型:wide angle, -
标准化提示词
画质提示词:
通用高画质:best quality,ultra-detailed,masterpiece,hires,8k(最佳质量,超精细,杰作,招聘,8k)
特定高分辨率类型:
extremely detailed CG unity8 k wallpaper(超精细的8 Unity游戏CG)
unreal engine rendered(虚幻引擎渲染)
画风提示词:
插画风:lustration,painting,paint brush(光泽,油漆,油漆刷)
二次元:anime,comic,game CG(动漫、漫画、游戏CG)
写实风:photorealistic,realistic,photograph(逼真的,逼真的)
提示词语法
- 权重增减
- 括号加数字
例:(white flower:1.5)
含义:调节白花(White flower)的权重为原来的1.5倍(增强) - 套括号
圆括号(增强):(((white flower))),每套一层,额外x1.1倍。
此处:调节白花(Vhite flower)的权重为原来的1.11.11.1=1.331倍(增强)
大括号(小增强):{{{white flower}}},每套一层,额外x1.05倍。
此处:调节白花(White flower)的权重为原来的约1.15倍(增强)
方括号(削弱):[[[white flower]]],每套一层,额外x0.9倍。
此处:调节白花(White flower)的权重为原来的约0.729倍(削弱)
提示词获取 - 百度翻译自定义需求
- 图生图功能反推提示词
- 参考模型网站例图的提示词
- OpenArt:https://openart.ai/
- ArtHubAi:https://arthub.ai/
- 利用提示词工具
- 一个工具箱:http://www.atoolbox.net/Tool.php?Id=1101
- AI词语加速器:https://ai.dawnmark.cn/
提示词污染
提示词污染可以考虑使用cutoff这个插件,一定程度上能缓解颜色混乱的问题。
但是prompt不听话本质上是个跟SD底层架构有关的问题,具体到你的情况下可能原因非常多,需要自己尝试排除,是个苦功夫:
- 用了炼的不好的模型(包含大模型和LoRA):对提示词依从性不好,模型总是有自己的想法,这种情况下可以换个同类型的模型或者调整对应权重来测试
- 提示词写的有问题:数量太多、顺序不对、分组不对、过度重复、权重分配、拼写错误……等等都有可能,用提示词矩阵和提示词搜索替换来排查
- 参数不优:分辨率、采样算法、采样步数、CFG、高清修复降噪强度等等,用XYZ plot排查
- 你碰到SD的能力极限了:这种时候就得依靠图生图、场外PS和inpainting来回修图了,没啥好办法
出图参数
![[图片]](https://img-blog.csdnimg.cn/afef1a6f01594b12b4e03c5258526cb2.png)
迭代步数 (Steps):迭代步数越多,画面越清晰,大于20步之后区别不大,推荐最大值40
采样方法 (Sampler):Euler适合插画,画面朴素;DPM2M和2MKarras速度较快;推荐后面几个带有加号的
![[图片]](https://img-blog.csdnimg.cn/ee87a3b0043f4b6facf34bc8700ee4f5.png)
宽度和高度:影响分辨率,但是不建议太高容易出现显存不足和多人多手多脚
提示词引导系数:画面和提示词的相关性,推荐7~12
随机种子数:-1代表随机种子,也可以使用后面的绿色按钮固定种子
总批次数:ai一次性给你绘画多少次,可以调高
单批数量:ai一次给你画几张,不建议调高
图像放大
高分辨率修复
![[图片]](https://img-blog.csdnimg.cn/8d1eb0599a46460ea3a5106d84e73e2f.png)
面部修复:通常勾选
平铺图:不要勾选
高分辨率修复:用来增加画面分辨率,放大倍数一般2~3,
重绘幅度:重绘幅度越高作出的画和原作越不像。重绘幅度太低容易出现边缘模糊,重绘幅度太高容易出现不必要的细节和变形,推荐0.30.5或者0.50.7
放大算法:推荐R-ESRGAN 4x+或者R-ESRGAN 4x+Anime6B(二次元)
潜变量算法(Latent)在低分二次元图的重绘中有着超越奇迹的效果,当你的模型在512x512级别的低分质量,缺少细节信息的时候,使用潜变量算法提高到0.6-0.7的重绘幅度能让你的图片直接从死复生。不过潜变量计算较为慢速,这里推荐放大幅度到1.5倍即可。后续在sd图中图插件分块vae中有潜变量空间调用,可以二次增加优化,推荐开启,再次放大1.5 重绘幅度在0.2即可。在分块中越大的重绘越不可取,如果图片细节丰富使用潜变量容易出现蹦图,因为潜变量重绘幅度过高,很容易对整体画面进行一次核打击。
SD Upscale放大脚本
这里的重叠像素为64,因此需要在宽高的部分各加64以此避免拼接区域的割裂
![[图片]](https://img-blog.csdnimg.cn/91678d01488c4d9399cdbe6f8432012e.png)
不过我们现在有了更加好用的放大脚本,相当于升级版——Ultimate SD Upscale
后期处理放大
还可以使用后期处理里面的放大,这里的放大就不会涉及重绘幅度,属于原原本本的放大
![[图片]](https://img-blog.csdnimg.cn/10c4cf29bdc1488bb2b934fbf51c1fd0.png)
大模型(Checkpoint)
决定主要绘图质量
大小:大,3~7G
文件目录:models\Stable-diffusion
后缀:.ckpt .safetensors(更小更安全)
模型分类:二次元、真实、2.5D
变分自动编码器(VAE)
调色滤镜,主要影响画面色彩质感
经典通用:kl-f8-anime2.ckpt
文件目录:models\VAE
后缀:.ckpt .pt .safetensors
推荐将模型推荐的VAE改成和模型一样的名字
推荐VAE
二次元模型:
Anything:是最受欢迎的二次元融合模型。针对二次元风格拥有非常好的效果,可以用简单的词语也创造出不错的效果,可以利用它打造出非常接近于类似动漫插画、角色立绘等的画面风格。
Counterfeit:是一款泛用性很广的插画风模型,细节还原度高,可以生产出各种包含复杂、室内外场景的绘画作品,非常适合喜欢精致感风格的创作者。
Dreamlike diffusion:是一个受欢迎且非常有特色的漫画、插画风模型,可以创作出超现实的魔幻主题作品,具有幻想色彩的画面和作品。
真实模型:
Deliberate:目前最好用的真实性模型之一可以生成非常具有真实质感的图像,可以用来做人物、机器等的生成;图片生成自由度高,非常适合设计师和艺术家的头脑风暴可以用来生成各种高度自由度的图片。
realistic vision:可以用来做人像、食物、动物等的生成,非常适合创作者创作非常具有真实感的作品 limitless
originality free from interference(LOF):人物面部处理比较精致,是能真正实现照片级人像输出的大模型。
2.5D模型:
NeverEnding Dream:在造人方面有自己的一套独特审美,被许多创作者拿来结合lara,进行动漫游戏角色的二次创作,提供真实感,恰到好处地满足观众对二次元世界的想象,却又不至于在真实世界里产生过分的陌生感。
protogen:可以算是一个真实性模型,但是在实现效果上的弹性给创作带来了很多额外的自由度,可以用来描绘非常具有魔幻感的超现实画面
protogen建议使用v2.2版本,生成图略偏迪士尼3D画风,这个版本对一些tag敏感度比较奇怪,比如(beautiful detailed eyes),生成的人物眼睛简直勾魂,(detailed face)就大概率生成手办风的图片,对眼睛颜色tag就不怎么敏感。
protogen其他版本更偏真实向,但审美非常西方化,比起其他写实风模型并无优势。
另外整个protogen系列出的东方脸都是刻板印象脸,只要有亚洲相关tag,出的图都很丑逼
GuoFeng3:该模型训练生成自国内作者,整体质感偏2.5D,非常适合用来生成古风的人物服饰场景,产出的女性人像外貌也非常符合国人的审美。
文本嵌入(Embeddings)
在P站也被叫做Textual Inversion
大小:很小
文件目录:\embeddings
后缀:.pt .safetensors(更小更安全)
使用时需要参考作者给出的权重参考,为了防止过度呈现,一般会限制权重在0.9~0.95之间
典型应用:人物三视图、负面提示词(easynegative)
低秩模型(LoRa)
Lora 的意义在于和checkpoint搭配使用,用来实现某些方面的微调
大小:比较大
文件目录:\models\Lora
后缀:.pt .safetensors(更小更安全)
应用在各种游戏、动漫角色的二次创作构建
使用时需要参考作者给出的权重参考
载入模式
提示词载入: Lora:KeQing3in1:0.5
Additional Networks:它支持你同时加载最多5个LoRA并赋予他们分别的权重
应用
![[图片]](https://img-blog.csdnimg.cn/55a670a611644b36b7830fb1a3490052.png)
超网络(hypemetwork)
也叫做扩展模型
一般被用于改善生成图像的整体风格即改变画风。
文件目录:\models\hypernetwork
使用方法,需要在设置中选择扩展模型然后选择将hypernetwork添加到提示词
![[图片]](https://img-blog.csdnimg.cn/9b061d5815d240e382b301e8929c2af2.png)
不过hypemetwork的作用经常可以被lora替代,因此使用频率较少
重绘
当对画面大部分内容满意只需要变动小部分内容时使用重绘
有三种方式分别是:局部重绘、涂鸦重绘、上传重绘蒙版
![**[图片]**](https://img-blog.csdnimg.cn/908db79b3e8449dcb75ed89eafec7b6d.png)
局部重绘
- 保持提示词不变,加上新的需求
- 重绘幅度调整到0.7~0.8
- 使用鼠标在图片上涂抹需要重绘的区域
![**[图片]**](https://img-blog.csdnimg.cn/283244f3c98a4ed4a7302005ba004429.png)
蒙版区域内容处理不同的选项差别不大有点微妙
重绘区域选择整张图片契合度更高
预留像素类似于缓冲带,重绘区域大时适当调高
蒙版模糊类似于羽化,区域大可以适当增大,控制在10以下比较好
涂鸦重绘
该功能使用步骤和局部重绘大致一致,不过增加了调色盘按钮,可以将你涂鸦的内容也作为参考内容重绘。
![[图片]](https://img-blog.csdnimg.cn/3765917a860a48f29852cb30b82a9bd4.png)
上传重绘蒙版
可以使用PS精确勾勒蒙版进行重绘
扩展
通过自带的拓展列表安装
![[图片]](https://img-blog.csdnimg.cn/66b0ddbfe8e54b9895af824556a50536.png)
通过拓展仓库网址安装
![[图片]](https://img-blog.csdnimg.cn/366d0c40ed7e4601bf4c2c831cdceb76.png)
直接下包
文件路径:\extensions
每一个拓展是一个单独的文件夹
ControlNet
根据控制模型的不同,它能实现累计共14个不同方面的控制
使用流程
- 在图片区域导入你想要模仿的图片
- 选择不同的控制类型,如姿势等
- 点击爆炸按钮生成骨骼图
- 设置参数,点击启用,进行生成
参数列表
![[图片]](https://img-blog.csdnimg.cn/67942d76e68f4b41a1d5e451d948196c.png)
**控制类型:**选择想要控制的内容
**预处理器:**不同的预处理器也会侧重不同的控制类型
**模型:**需要选择和预处理器相同的模型
**控制权重:**决定这个控制效应在图片中呈现出来的强度,默认1
**引导介入/终止时机:**图像不断扩散的过程中什么时候加入影响,开始的时间晚一点可以赋予更多的自由度
**Preprocessor Resolution:**预处理图像分辨率,在性能富裕对精度要求大时可以调高
**控制模式:**控制在提示词的影响与ControlNet的影响之间更倾向于哪一个,多数时候采纳Balanced miode
![[图片]](https://img-blog.csdnimg.cn/88283697ec5043f3904f8f123e932dd0.png)
**完美像素模式:**它可以自动计算预处理器产出图像的最适合分辨率,避免因为尺寸不合导致的图像模糊变形,推荐选中
**允许预览:**在加载想要模仿的图片时可以自动生成骨骼图
常用五大控制模型
![****[图片]****](https://img-blog.csdnimg.cn/00e4a03d28bd4088808c2b795ff73514.png)
openpose:刻画手指动作与面部表情
depth:刻画景深,推荐带两个+的,尤其是带有肢体交叉的场景,甚至和OPENPOSE联合使用
canny:刻画外形,可以用在线稿上色。对于白底黑线的线稿图选用invert (from white bg& black line)处理
softedge:在使用canny太过约束时可以使用,只会保留大轮廓
scribble: 比softedge更自由奔放,可以实现灵魂画手丰富想象
多重混合模型
![**[图片]**](https://img-blog.csdnimg.cn/65fe936b5dd24a67bef03d7d448e0fe0.png)
可以使用多个ControlNet模型结合使用
更多词汇参考:
📚 学习笔记-Stable Diffusion篇

风格系列
lora:奇幻炫彩
1girl, fish, goldfish, solo, blue eyes, bag, japanese clothes, kimono,
profile, upper body, white hair, from side, backpack, letterboxed,
bubble, red kimono, hair ornament, bangs, floral print, blush,
underwater lora:shoal-000018:1 Negative prompt: extra fingers,fewer
fingers,(low quality, worst quality:1.65), (bad anatomy), (inaccurate
limb:1.2),bad composition, inaccurate eyes, extra digit,fewer
digits,(extra arms:1.2),nipples ENSD: 31337, Size: 448x832, Seed:
2154325080, Model: Counterfeit-V3.0_fp16, Steps: 26, Sampler: DPM++ 2M
Karras, CFG scale: 8, Clip skip: 2, Model hash: cbfba64e66, Hires
steps: 20, Hires upscale: 2, Hires upscaler: Latent (nearest-exact),
Denoising strength: 0.56
相关文章:
AI绘画-Stable Diffusion笔记
软件:Stable Diffusion 视频教程来自 https://www.bilibili.com/video/BV1As4y127HW/?spm_id_from333.337.search-card.all.click 提示词 提示词类别 内容型提示词 人物主题特征: 服饰穿搭:white dress 发型发色:blonde hair,l…...
中值滤波算法及例程
中值滤波是一种常用的非线性图像滤波算法,它能够有效去除图像中的椒盐噪声(即孤立的亮或暗像素点),同时保持图像边缘和细节的清晰度。中值滤波的主要思想是使用一个滑动窗口,在窗口内对像素值进行排序,并将…...
SpringBoot 如何使用 Ehcache 作为缓存
使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…...
Stable Diffusion 图片换脸插件Roop保姆教程 附错误解决办法和API使用
换脸技术已经不是新鲜事物,但如何实现简单、快速、高效的换脸操作呢?Roop插件正是为解决这一问题而生的。 sd-webui-roop 插件适用于已经本地部署了SD的用户。相较于传统的换脸技术,Roop插件几乎不需要训练,只需一张照片,即可在10秒内完成换脸。 但是要注意到是必须注意…...
华为OD机试 - 组成最大数(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…...
十一、2023.10.5.计算机网络(end).11
文章目录 17、说说 TCP 可靠性保证?18、简述 TCP 滑动窗口以及重传机制?19、说说滑动窗口过小怎么办?20、说说如果三次握手时候每次握手信息对方没收到会怎么样,分情况介绍?21、简述 TCP 的 TIME_WAIT,为什么需要有这个状态&…...
基于SpringBoot的网上摄影工作室
目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 作品分类管理 轮播图管理 摄影作品管理 摄影作品收藏 摄影圈 摄影作品发布 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统…...
Spring源码解析——IOC之bean 的初始化
正文 一个 bean 经历了 createBeanInstance() 被创建出来,然后又经过一番属性注入,依赖处理,历经千辛万苦,千锤百炼,终于有点儿 bean 实例的样子,能堪大任了,只需要经历最后一步就破茧成蝶了。…...
互联网摸鱼日报(2023-10-07)
互联网摸鱼日报(2023-10-07) 36氪新闻 小米汽车将研发增程式电动车,产品已有规划;LG新能源和丰田汽车北美公司签署电动汽车电池供应协议|36氪新能源日报1005 详解企业数字化转型建设过程中所需的七种能力 电商平台,如何让丰收「…...
深入理解RBAC
RBAC是一种基于角色实现访问控制的权限管理机制,通过定义角色和权限、用户和角色、角色和角色之间的关系,实现多层次、细粒度、可复用的权限管理系统。原文: Role-based Access Control (RBAC) Model[1] Bernard HermantUnsplash Avery Pennarun写的&quo…...
uniapp微信小程序蓝牙连接与设备数据对接
蓝牙连接并通信方法封装大致步骤。 初始化蓝牙并搜索;获取并启用service服务;数据读取和监听设备返回数据 需要使用uniapp官方提供api: // 关闭蓝牙 uni.closeBluetoothAdapter({}) // 打开蓝牙 uni.openBluetoothAdapter({}) // 搜索附近…...
HBase 计划外启动 Major Compaction 的原因
HBase 的 Compaction 有两个线程池,一个是为 Minor Compaction 准备的, 一个是为 Major Compaction 准备的,hbase.regionserver.thread.compaction.throttle 是决定 Compaction 请求放入哪个线程池的阈值,当待合并文件的总大小小于这个阈值时,就是一个 Minor Compaction,…...
设计模式-桥接模式
概念 用于把抽象化与实现化解耦使得二者可以独立变化 演示 class ColorShape {yellowCircle() {console.log(yellow circle)}redCircle() {console.log(red circle)}yellowTriangle() {console.log(yellow triangle)}redTriangle() {console.log(red triangle)} }// 测试 le…...
arcgis地形分析全流程
主要内容:DEM的获取与处理、高程分析、坡度分析、坡向分析、地形起伏度分析、地表粗糙度分析、地表曲率分析; 主要工具:镶嵌至新栅格、按掩膜提取、投影栅格、坡度、坡向、焦点统计 一 DEM的获取与处理 1.1 DEM是什么? DEM(D…...
mapper.xml中的sql标签
在MyBatis中,mapper.xml文件是用于定义数据库操作的映射文件,其中的<sql>标签用于定义可重用的SQL片段。这些SQL片段可以在<select>, <update>, <insert>, <delete>等操作中被引用,以避免在多个地方重复编写相…...
重启redis的步骤
要重启 Redis,需要使用以下步骤: 登录到您的服务器:使用 SSH 或其他远程访问方式登录到托管 Redis 的服务器。 停止 Redis 服务器:您可以使用以下命令停止 Redis 服务器: redis-cli shutdown 这将向 Redis 服务器发送…...
第二证券:如何选股票的龙头股?
在股票商场中,每个出资者的方针都是可以出资到那些未来可以表现出色并带领整个工作开展的龙头股。选股关于出资者来说非常要害,由于选股不妥或许会导致出资失利。那么,怎么选股票的龙头股呢?本文从多个角度进行剖析,协…...
【华为OD机考B卷 | 100分】统计监控、需要打开多少监控器(JAVA题解——也许是全网最详)
前言 本人是算法小白,甚至也没有做过Leetcode。所以,我相信【同为菜鸡的我更能理解作为菜鸡的你们的痛点】。 题干 OD,B 卷 100 分题目【OD 统一考试(B 卷)】 1. 题目描述 某长方形停车场每个车位上方都有一个监控…...
Python Django 详解(基础)
文章目录 1 概述1.1 安装 django1.2 创建 django 项目1.3 创建 app 2 启动 Django2.1 settings.py:注册 app2.2 view.py:URL和视图对应2.3 启动 Django2.4 访问 3 快速上手3.1 templates:html 模板3.2 static:静态文件3.3 模板语法…...
C语言内存函数
目录 memcpy(Copy block of memory)使用和模拟实现memcpy的模拟实现 memmove(Move block of memory)使用和模拟实现memmove的模拟实现: memset(Fill block of memory)函数的使用扩展 memcmp(Compare two blocks of memory)函数的使用 感谢各位大佬对我的支持,如果我的文章对你有…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
ABAP设计模式之---“Tell, Don’t Ask原则”
“Tell, Don’t Ask”是一种重要的面向对象编程设计原则,它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则? 这个原则的核心思想是: “告诉一个对象该做什么,而不是询问一个对象的状态再对它作出决策。…...
