设计模式

栏目: IT技术 · 发布时间: 4年前

内容简介:交互系统的丰富性和实现它的难度是密切相关的:交互越是丰富,越是容易出错。

设计模式

这几天在看一本《 交互式程序设计 》,书中提到:

交互系统的丰富性和实现它的难度是密切相关的:交互越是丰富,越是容易出错。

这点深有体会, 越是复杂的交互,越容易造成系统的偏离 。所以, 最近我在实验的一款编辑器 努力在保持简单的交互,并保持丰富的功能。

设计模式

这一条经验,其实就可以理解为一种“设计模式”。

模式 的概念来源于克里斯托佛·亚历山大的著作 《 建筑模式语言 》。该书介绍了城市设计的 “语言”, 而此类 “语言” 的基本单元就是模式。模式中可能会包含对窗户应该有多高、 一座建筑应该有多少层以及一片街区应该有多大面积的植被等信息的描述。

设计模式

- 设计

设计上的设计模式,更接近于 设计规则(原则) ,如果是平面设计,如配色规则之类的;空间设计的话,就如“一池三山”此类经典空间模式;一般是可以用图纸来表达的。

设计模式

- 代码

软件设计中的设计模式 是常见问题的典型解决方案。

设计模式常用于解决代码中反复出现的设计问题 。设计模式与方法或库的使用方式不同,你很难直接在自己的程序中套用某个设计模式。你需要根据模式来实现符合自己程序实际所需的解决方案。

人们经常会混淆 模式和算法 ,因为两者在概念上都是已知特定问题的典型解决方案。但算法总是明确定义达成特定目标所需的一系列步骤, 而模式则是对解决方案的更高层次描述。同一模式在两个不同程序中的实现代码可能会不一样。

算法更像是菜谱 :提供达成目的的明确步骤。而 模式更像是蓝图 :你可以看到最终的结果和模式的功能,但需要自己确定实现步骤。 是不是有点像产品原型图?

设计模式,一般常用伪代码来表达。举一段javascript的代码示例单例模式:

class Mix {

static getInstance(...arg) {

if (!Mix.instance) Mix.instance = new Mix(arg);

return Mix.instance;

}

constructor(name) {

this.name = name;

console.log('运行一次')

}

print() {

console.log(`打印 ${this.name}`);

}

}


var m1 = Mix.getInstance(1)

var m2 = Mix.getInstance(2)

var m3 = Mix.getInstance(3)


m1.print()

m2.print()

m3.print()

一般我们把代码的 设计模式 分为3种:

创建型模式

提供创建对象的机制,保持代码的灵活性和可复用性。

结构型模式

解决如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。

行为模式

负责对象间的高效沟通和任务调度。

一张图概括设计模式

设计模式

- 推荐

https://refactoringguru.cn/design-patterns/python

如果你想熟练掌握设计模式,可以仔细练习网站上的代码示例。

设计模式

我有个 练习代码的习惯 ,我喜欢 把代码总结成示意图的方式

设计模式

关注我的知识星球,查看我平时的笔记

- 思考

设计模式是一种通用的解决方案,或者是一种规律。

做设计或者写代码 (写文章) 的时候,我们应该努力做到无意识地使用设计模式。

如果是文章,我们可以利用聚类等算法,总结出文章的“ 写作套路 ”,进而得出文章模板;

如果是设计作品,比如海报设计,大家可以思考下如何 通过技术手段总结出海报设计的设计模式

设计模式

可通过扫码,与我深度交流

或赞赏获取微信号


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS3 Solutions

CSS3 Solutions

Marco Casario / Apress / 2012-8-13 / GBP 35.50

CSS3 brings a mass of changes, additions, and improvements to CSS across a range of new modules. Web designers and developers now have a whole host of new techniques up their sleeves, from working wit......一起来看看 《CSS3 Solutions》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换