设计模式综测文档。
班级: 软件一班
学号: 13700144
姓名: 孙洁
简介。设计模式(design patterns)
模式(pattern)第一次被提出是在建筑师christopher alexander的专著中,原义是用来形容高质量的建筑设计方案中的相似点。
2023年划时代的gof著作《design patterns elements of reusable object-oriented software on 》发表。它系统地将高质量软件系统设计方案中的相似点——设计模式归纳出来。从此软件领域的设计模式研究成果层出不穷,方兴未艾。
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、**设计经验的总结。使用设计模式是为了可重用**、让**更容易被他人理解、保证**可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使**编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。
项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重**生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
一、 设计模式分类:
总体来说设计模式分为三大类:
创建型模式
工抽单建原。
厂象例造型。
方工模者模。
法厂式模式。
模模式。式式。
适装代外桥组享。
配适理观接合元。
器器模模模模模。
模模式式式式式。
式式。简策模观状备迭命职中访。
单略板察态忘代令责介问。
工模方者模录器模链者者。
厂式法模式模模式模模模。
模模式式式式式式。
式式。整体描述:
设计模式的三大原则。
1) 开放-封闭原则(open close principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的**,实现一个热插拔的效果。所以一句话概括就是:
为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。
问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有**进行修改时,可能会给旧**中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有**经过重新测试。
解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的**来实现变化。
2) 单一职责原则(srp:single respon sibility principle)
又称单一功能原则,面向对象五个基本原则(solid)之一。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。
而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。
解决方案:遵循单一职责原则。分别建立两个类t1、t2,使t1完成职责p1功能,t2完成职责p2功能。
这样,当修改类t1时,不会使职责p2发生故障风险;同理,当修改t2时,也不会使职责p1发生故障风险。
3) 接口隔离原则。
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
问题由来:类a通过接口i依赖类b,类c通过接口i依赖类d,如果接口i对于类a和类b来说不是最小接口,则类b和类d必须去实现他们不需要的方法。
解决方案:将臃肿的接口i拆分为独立的几个接口,类a和类c分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。
三、三个设计模式。
1)观察者模式。
观察者模式是类和类之间的关系,不涉及到继承,观察者模式类似于邮件订阅和rss订阅,当我们浏览一些博客或wiki时,经常会看到rss图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!
对象之间是一种一对多的关系。
关系图:类的作用:mysubject类就是我们的主对象,observer1和observer2是依赖于mysubject的对象,当mysubject变化时,observer1和observer2必然变化。
abstractsubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对象,且当mysubject变化时,负责通知在列表内存在的对象。我们看实现**:
一个observer接口:
j**a] view plaincopy
public interface observer
j**a] view plaincopy
public class observer2 implements observer
subject接口及实现类:
j**a] view plaincopy
public interface subject
@override
public void del(observer observer)
@override
public void notifyobservers()
j**a] view plaincopy
public class mysubject extends abstractsubject
测试类:j**a] view plaincopy
public class observertest {
public static void main(string args) {
subject sub = new mysubject();
《大话设计模式》读后感
大话设计模式 读后感。写出一本有技术含量的书不难,市面上有关计算机信息管理类的书多半如此 写出一本诙谐的书也不难,很多通俗 都做到了 而写出一本既诙谐又有技术含量的书,就没那么容易了。程杰所著的这本 大话设计模式 以一种诙谐易懂的形式将复杂抽象的编程深入浅出地表述出来,逻辑严密,层层递进,就编程类书...
2023年综测补充说明
草业学院2012 2013学年本科生综合测评补充说明。级通过英语国家四级的学生在本年度综合测评中不对其四级通过情况反映,在下一学年综合测评中再给予相应的加分。2 技能测评中 社会实践情况 一项,重点考察2011级学生 其他年级可将本项按基础分处理,班级中如有学生在此项有加分点,在技能测评奖励分中反映...
小升初综测数学勾股定理题型
小升初数学考试将会达到一个什么样的小学和初中知识的衔接程度?请看某高新一中某年综合测试最后一题,这就是在不出现奥数内容的前提下对灵活思维的测评。勇敢闯一闯。阅读下列材料,并解决后面的问题 11分 我国是历史上较早发现并运用 勾股定理 的国家之一。我国古代把直角三角形中较短的直角边称为 勾 较长的直角...