设计模式——第一课

来源:互联网 发布:最优化方法 解可新 编辑:程序博客网 时间:2024/05/16 11:32

        设计模式按照特点可以分为三大类型,分别是:创建型、结构型和行为型。常用的设计模式又可以细分为23种。


        创建型模式使用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其关联对象的创建、组合和表示方式。创建型模式的两个主要功能:1、将系统所使用的具体类的信息封装起来;2、隐藏类的实例是如何被创建和组织的。外界对于这些对象只知道它们有共同的接口,而不清楚具体的实现细节。


        常见的创建型设计模式有:

        单例模式(Single Pattern):一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

        工厂方法模式(Factory Pattern):在工厂方法模式中,工厂类成为了抽象类,实际的创建工作将由其具体子类来完成。工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中去,强调的是“单个对象”的变化。

        抽象工厂方法(Abstract Pattern):抽象工厂是所有工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂可以向客户提供一个接口,使得客户可以在不必指定产品具体类型的情况下,创建多个产品组的产品对象,强调的是“系列对象”的变化。

        创建者模式(Builder Pattern):把构造对象实例的逻辑移到了类的内部,在类的外部定义了该类的构造逻辑。它把一个复杂的对象的构造过程从对象的表示中分离出来,将一个复杂的对象简化为一个比较简单目标对象,强调的是产品的构造过程。

        原型模式(Prototype Pattern):原型模式和工厂模式一样,同样对客户隐藏了对象创建工作,但与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过复制一个现有对象生成新对象。


        结构型模式讨论的是类和对象的结构,它采用继承机制来组和接口和实现,或者通过组合一些对象实现新的功能。


        结构型常见的设计模式有:

        代理模式(Proxy):为其他对象提供一种代理以控制对该对象的访问。

        装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

        适配器模式(Adapter):将一个类的接口变换成客户端所期待的另一个接口,从而使原本因为接口不匹配而无法在一起工作的两个类能够在一起工作。

        组合模式(Composite):也叫合成模式,将对象组合成树型结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

        桥梁模式(Bridge):也叫桥接模式,将抽象和实现解耦,使得两者可以独立变化。

        外观模式(Facade):也叫门面模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,外观模式提供一个高层次的接口,使得子系统更易于使用。

        享元模式(Flyweight):是池技术的重要实现形式,使用共享对象可有效地支持大量的细粒度的对象。


        行为型设计模式关注的是对象的行为,用来解决对象之间的联系问题。


        常见的行为型设计模式有:

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

        命令模式(Command):是一种高内聚的模式,将一个请求封装成一个对象,从而使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

        责任链模式(Chain of Responsibility):使多以对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

        策略模式(Strategy):也叫政策模式,定义一组算法,将每个算法都封装起来,并且是他们之间可以互换。

        迭代器模式(Iterator):提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的内部细节。

        中介者模式(Mediator):用一个中介对象封装一些列的对象交互,中介者使各对象不需要显式的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

        观察者模式(Observer):也叫发布订阅模式,定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并被自动更新。

        备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态

        访问者模式(Visitor):封装一些作用于某种数据结构中的个元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

        状态模式(State):当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类型,状态模式的核心是封装,状态的变更引起了行为的变更。

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

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 出现请点击画面开始进行校准怎么办 大学毕业后才发现荒废了学业怎么办 房屋面积重新测量超了一倍怎么办 物管把业主的电断了怎么办 在人多的场合紧张不适应怎么办 人寿人身损害勘查结果有争议怎么办 批量性不良再限度样本规格内怎么办 老公说老婆不攒钱都买衣服了怎么办 华为手机获取安装包信息失败怎么办 液压电动脱模器不上升了怎么办 退伍军人证和身份证名字不付怎么办 车辆有违章需要短信提醒要怎么办 1969年退伍的退伍证丢了怎么办 江苏移动没实名认证停机了怎么办呀 亿达老年手机来电音量太大怎么办 挑三十六乘二的内螺纹丝瞳毛怎么办 内六角螺丝的冒滑了怎么办 孔里的内六角滑了怎么办 十字螺丝刀的头卡在螺母里怎么办 内六角扳手断在螺丝孔里怎么办 六棱螺丝刀折进螺丝里了怎么办 内6棱螺丝拧花了怎么办 只有pe模式可以用键盘鼠标怎么办 电脑重做了系统连不上无线网怎么办 联想手机死机了怎么办不可拆卸电池 手机界面弹出后大小无法调整怎么办 方向盘打方向瑟瑟的吱吱响怎么办 三脚架提升杆螺丝滑丝了怎么办 花土里面有很多细长的螺丝怎么办 防盗门外边上边缝宽螺丝松了怎么办 填充墙与框架梁不对齐怎么办 亚轧滚珠丝杠螺帽超程了怎么办 在公司交的五险一金辞职了怎么办 铝合金的渣子整到眼睛里怎么办 铁锅手柄上的铆钉拧不动怎么办 喂完鱼鱼缸上边飘着一层油膜怎么办 铸铁管道横着排的结口漏水怎么办 缤智行李架免打孔螺丝款怎么办 前保险杠和叶子板缝隙大怎么办 新奥拓的大灯调节螺丝滑丝了怎么办 小米手环2计步不准怎么办