`
Riancy007
  • 浏览: 116443 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

大清早的,搞清楚了几个概念

阅读更多
一直总是听人说起这几个术语,自己反正也没怎么注意,直到上次去面试,才发现小的东西,或者说常听见的东西其实还是蛮重要的,它主要会考到你对整个行业的认识。

1.设计模式
   设计模式就是一些牛人在设计系统时的设计方案比较好,在以后的其他系统中可以重复利用,节省时间和精力。

   正式点的说法是:
  设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

   四个基本要素 :

1. 模式名称(pattern name)

      一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。

2. 问题(problem)

      描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。

3. 解决方案(solution)

      描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

4. 效果(consequences)

      描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。
Copy From Web

基本的设计模式:

Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

Chain of Responsibility:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

Command:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

Composite:将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。

Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。

Facade:为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

Factory Method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。

Flyweight:运用共享技术有效地支持大量细粒度的对象。

Interpreter:给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。

Iterator:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

Mediator:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。

Observer:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

Prototype:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。

Proxy:为其他对象提供一个代理以控制对这个对象的访问。

Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

State:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。

Strategy:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。

Template Method:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

Visitor:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。



2.框架
  框架说白了就是一个半成品,你可以在这个半成品的基础上做一些其他的开发和设计,以完成你需要的功能。就是给你一个基础,让你继续二次开发。
  一般来说,框架都是某个行业的共性的提炼。它是由一组紧密关联的类组成,运用类彼此之间的配合来完成可以重复利用的设计概念。比如,Hibernate,它肯定就是一些访问数据库的类,以及内部的一些对象与关系表转换的类组成的,它可以重复用来访问数据库。利用此框架,你可以开发更复杂的数据库访问功能。

3.架构
  架构是软件系统从整体到部分的最高层次划分,也就是说,整体稍微划分下就是架构了。
  它主要是决定这个系统的各个方面的选型,用什么框架,什么系统之类的。。见拿来主义之比较。





分享到:
评论

相关推荐

    清早的菜市场作文.doc

    清早的菜市场作文.doc

    shortcut角落截图

    好用的截屏小工具,欢迎使用,简单方便。大清早的,节日快乐。。。

    梅河口市巨人电脑培训中心 C语言程序设计答案

    梅河口市巨人电脑培训中心 >> 教学研究 >> 教学素材 >> 正文 C语言程序设计答案 这可我一大清早发了好长一段时间整理的啊!

    上班时间刷leetcode-TheAlgorithms-[removed]JavaScript中的SwordToOffer和LeetCod

    上班时间刷leetcode 记录一些学习和解决算法题目的代码和心得。...刷let17时,写对了一个比较复杂的递归,就是之前记录的for循环中嵌套递归,算是递归中比较复杂的了吧,是大清早来刷算法,感觉效率很高,对递归理解和

    正则表达式与数学(方程式、线性方程)

    大清早的打QQ去,收到一位网友的信息。问得是正则表达式判断素数的。去年看到过,没记录下来。

    《呼噜、呼噜、哞》绘本故事PPT模板

    《呼噜、呼噜、哞》绘本故事PPT 农场主不乐翁特想知道他的动物们每天都在干什么。 每个晚上,他都要守在谷仓外,偷听那些门后传来的声音。 呼噜,呼噜,哞 奶牛在打鼾。... 每个大清早,鸭子都要去看

    体验PHPWind v7.3RC意外收获

    关键字描述:收获 意外 体验 &mdash 用户 功能 Phpwind 建议 论坛3月19日清晨——今天大清早打开,习惯的登陆phpwind官方论坛,却发现7.3RC已经开始官方演示。说实话,该演示版给我的第一印象并不友好,因为本人实在...

    《奶牛派尼傲》绘本故事PPT模板

    《奶牛派尼傲》绘本故事PPT 大清早是给奶牛们挤奶的时间。 米莉和茉莉喜欢穿上靴子,戴上帽子去帮忙。 农夫海格特知道每头奶牛的名字,米莉和茉莉也知道每头奶牛的名字。她们是毛毛、 花花、三叶、小菊和派尼傲。 ...

    ios-看知乎 - 每天三次,看知乎精选。.zip

    如果对你有帮助, 请给个star 每天三次,看知乎精选。 清早上班路上,不错过昨日最新话题; 午饭后休息时间,看看最近还有哪些热门; 傍晚回家,读一读过去的好答案。 既有长篇干货,也有一句话抖机灵; 所有...

    在线查询网粥谱查询 v1.0.rar

    天冷时,清早起床喝上一碗热粥,可以帮助保暖、增加身体御寒能力,能预防受寒感冒。  5.防止喉咙干涩。对于喉咙不适、发言疼痛的人,温热的粥汁能滋润喉咙,有效缓解不适感。  6.调养肠胃。胃功能较弱或溃疡...

    SPS 电源

    我们先以日常生活中会用到的电器用品来说明,清早起来打开电子式日光灯或电子式台灯,刷牙时,充电 式电动牙刷之充电器,用遥控器打开电视机看新闻,用电磁炉或微波炉加热早餐,出门搭电梯下楼,进入办 公室时,放眼...

Global site tag (gtag.js) - Google Analytics