首页 > 编程知识 正文

软件设计模式java版课后答案,如何判定设计是否抄袭

时间:2023-05-03 12:36:10 阅读:166385 作者:1892

设计模式的栏。 介绍常用的设计模式和设计思想

“你在开发中使用过设计模式吗? ”

“你能告诉我工厂模式如何实现吗? ”

“Spring使用了什么样的设计模式? ”

这些问题你很清楚吗? 大家都接受过面试吧。 我还记得第一次被问到时的脸。 之后,立刻被对方投来的轻蔑的目光遭到了1万分的暴行。

展翅回去后,一口气学习了23种设计模式。 多次感叹“代码还能这么写”。

在今后的日子里,写hello world也是“你知道有23种写法吗? ”我问自己。

现在想想真的是too young! too simple!

从生硬到灵活运用,体验过设计模式的甜美,体验过过度设计的痛苦。 但不可否认,设计模式一定是一把利刃。 虽然使用不当有时会伤到自己。

有一天喝完酒的早晨,品尝了一口保温杯里的枸杞。 看着窗外凌晨4点的帝都,脑海里突然浮现出拷问灵魂的问题:设计图案来自哪里?

无处不在的模特建筑师Christopher Alexander说。 **每个模型都代表了我们身边不断出现的问题,以及问题解决方案的核心。 *这样,就可以一次又一次地使用这个方案,而不需要重复的劳动。

这个词太通用了,放进软件领域完全通用啊。 如果你不了解Alexander,你可能以为这是谁的计算机领域大神。

模型是解决问题的方案的总结。 任何行业,任何行业,无论是软还是硬。 如果问题相似,可以用类似的解决办法解决问题。

图案有四个元素:

问题:

设计模式是为了解决问题的。 没有问题地使用什么样的设计图案? 这是czdmj的骄傲!

所有的模式都是用来解决某个共性问题的,所以有问题才会有模式。 问题说明了设计模式可以解决的问题。 问题可能是设计不灵活,也可能是难以实现的功能。

解决方案:

解决方案说明设计的构成要素。 单个对象或组件之间的关系和责任。 解决方案是灵活的,对某些问题是共同的。 如果遇到这些问题,可以采用此解决方案。

效果:

有句话叫“不看广告看疗效”。 设计模式也是对症下药,容易治愈。

效果体现了采用这种设计模式给你带来的利益。 一些设计模式可以为你解决同样的问题,但需要权衡不同设计模式的效果,有的放矢。 最终达到最高的灵活性、可扩展性和可移植性。

名称:

每个设计模式都需要一个短名称。 有容易记住的名字,需要的时候就能想起来。 可以根据名称立即映射此设计模式的其他元素。

其实模式四要素和看病吃药是一样的。 得了某种病是个问题。 解决办法是吃多少种药,剂量是多少? 当然效果是药物的效果。 最后取个好名字。 不用说,是容易记住“乙酰氨基酚”,还是“感康”容易记住。

模拟现实世界吧。 在软件领域遇到的问题在人类文明几千年的发展过程中早就遇到了。 也有解决的模型。

软件设计模式基本上是参照现实世界现有的模式来实现的。

想想看。 早上,穿上“工厂”做的衣服“装饰”自己。 去公司取出电脑,连接“适配器”(电源),连接鼠标、键盘、显示器,在工作站上“组合”。 中午叫美团“代理”购买午饭。 下午困了,我想睡一会儿。 经理来了同事的话,马上告诉我“通知我”。 下午用公司的“模板”完成PPT的报告。 结束自己“thread”一天的工作,晚上美丽地进入“sleep”。 但是,第二天早上……

真是充满设计模式的一天!

因为没有对象,不好意思谈论模式,所以要谈论设计模式,就需要谈论面向对象。 可以说没有面向对象就没有今天的设计模式。

软件设计要模仿和借鉴现实世界的模型,首先要有测绘现实世界的能力。 面向对象正是解决了这个问题。 通过利用面向对象,我们可以在软件世界中构建一切现实,“模仿现实世界中现有的优秀解决方案”。

面向对象使编程与真实世界更加协调,从更高的层次对系统进行建模。 这可以带来以下优点。

现实世界几千年来积累了几万亿的优秀设计,无论是具体的机械设备,还是方法论、工程理论,都只是一个小技巧。 我们可以作为软件设计的参考。 为了让开发者更容易理解,面向对象开发的软件。 我们都很了解我们生活的世界。 就连生活经验也能推测出对方的某种行动逻辑是什么。 如果有面向对象的利器,应用现实世界的设计模式,23种软件设计模式不是马上就产生了吗?

现实是残酷的,设计模式在90年代初逐渐受到重视,94年GOF收集了23种设计模式并出版了书。 面向对象语言在70年代出现了雏形,但中途这20年来都做了什么呢?

虽然寻找对象还很困难,但让我们先谈谈面向对象语言的发展史。

1967年已经出现了面向对象语言Simula 67。 具有当前面向对象语言的基础概念。 但由于实现不够,学习困难,最终没有流行起来。 但其面向对象思想对后来软件语言的发展产生了很大的影响。

20世纪70年代出现的Smal

ltalk,被公认为是第二个面向对象的程序语言。并且是第一个完整实现面向对象的程序语言。它推动了面向对象的程序语言发展。它后面出现的C++,Java,C#,Ruby等,无不受其影响。此外90年代很多编程思想都来源于Smalltalk。

此后,经历 C++ 的辉煌以及借助 Java 语言便利性的有力推广,面向对象的程序语言开始大面积占领市场。时间来到90年代,GOF的《设计模式》将软件设计模式推到行业面前,经典就这样诞生了!

由此可以看到设计模式紧随面向对象语言的发展前行。从面向对象语言诞生之初,从业人员就已经开始不断总结解决问题的设计方案,通过模式的四要素进行提炼。虽然没有公布于众,但其实早已有了智慧的结晶,只是等一个契机迎来爆发。

设计模式就是面向对象的灵魂和智慧!

面向过程的语言就不配拥有灵魂和智慧吗?

文章读到这里,想必你肯定有这个疑问,面向过程的语言没有设计模式吗?

说到这个问题,我们先回到模式的定义上来----解决问题的核心方案。无论面向过程、还是面向对象,其实都是在解决软件领域的问题。面向过程的语言也需要可复用的解决方案。只不过这些方案没有集结出书而已。但是一定存在zjdst个人的文档里、博客里或者脑子里。

后来随着编程语言向面向对象语言倾斜,人们也更加关注面向对象语言的设计模式。《设计模式》这本书正是在这个时期推出并走红。另外一个最重要的原因,面向对象语言让我们可以很自然的映射现实世界,从而可以更加容易的使用其他领域已有的方案。

换句话讲,是面向对象让设计模式大量涌现,并且开始被从业者重视。因为通过面向对象,可以更容易的复用现实世界已存在的模式。但面向过程语言也有设计模式。

总结

面向对象让软件世界有能力和现实世界形成映射。从而,人类几千年积累的优秀设计和实践,可以被直接转化运用到软件之中。这对于只有几十年的软件行业,是跨时代的进步!!如果你阅读过大量开源软件代码,就会发现优秀的软件设计全部来源于生活。

cjdzt面对一个软件难题,其实可以跳出来想一想现实世界中有没有类似问题,解决方案是什么。

我们只需要把现实世界造好的轮子搬到软件中即可。站在人类几千年的文明之上,还会有什么不能解决的软件难题吗?

模式是通用的,善用现实世界的模式解决软件问题,是优秀软件设计者必备技能。
后面系列文章,我会通过现实世界映射来分析软件中的优秀设计。归根溯源,一起看看这些优秀的软件设计从何而来!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。