• 概括《软件设计模式》


        软件设计模式的定义源于建筑学:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无须再重复相同的工作。即:模式是在特定的环境下中解决问题的一种方案。对于软件,设计模式有更精准的定义:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

       软件设计模式上学期共学习了二十四种,分别是简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。接下来就简要解释下这二十四种模式。

        简单工厂模式:属于类创建型模式。专门定义一个类负责创建源于相同父类的实例,java中称之为static方法,在实际运用中,外部不需要实例化这个类就可以直接调用该方法来获得需要的对象。

        工厂方法模式:属于类创建型模式。简单工厂模式有一个缺点就是违背了“开闭原则”。简单工厂模式中,具体产品与工厂类之间的耦合度太高,严重影响了系统的灵活性和扩展性,于是工厂模式中新添了一个具体产品类。工厂模式中先定义一个抽象的工厂类,再定义具体的工厂类来生成具体实现,它们实现在抽象工厂类中定义的方法。工厂模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类就是负责生成具体的产品对象,这个方法实现的是通过工厂子类可以确定究竟应该实例化哪一个具体产品类。

        抽象工厂模式:属于对象创建型模式。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式中不仅有抽象的工厂,还有抽象产品,其分别对应具体工厂与具体产品,具体工厂跟具体产品分别继承自抽象工厂与抽象产品,具体工厂可以生产不同的产品,具体产品可以被不同的具体工厂生产。

        建造者模式:属于对象创建性模式。建造者模式关注复杂对象是如何一步一步创建完成的,对于用户而言,无需知道创建过程和内部组成细节,只需直接使用创建好的完整对象即可。该模式将一个复杂对象的构建与表示分离,使用同样的构建过程可以创建不同的表示,用户可以直接指定复杂对象的类型和内容来创建对象,用户不需要知道内部的具体构建细节。

        原型模式:属于对象创建型模式。该模式可以创建一个对象,然后通过克隆的方式复制出多个相同的对象。定义一个可以复制自己方法的接口,作为具体原型类的父类,可以使抽象类也可以是接口,然后具体原型类通过继承实现父类的方法,返回一个复制的对象即可。

        单例模式:属于对象创建型模式。该模式用来保证系统中的某个对象的唯一性即一个类只能有一个实例。而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

        适配器模式:属于结构型模式,该模式既可以作为类结构型模式也可以作为对象结构型模式。该模式可以将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。

        桥接模式:属于对象结构型模式。该模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量,桥接模式将抽象部分与它的实现部分分离,使他们都可以独立的变化。

        组合模式:属于对象结构模式。组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象和组合对象的使用具有一致性。

        装饰模式:属于对象结构型模式。通过关联机制来给对象增加一些额外的功能。装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。

        外观模式:属于对象结构型模式。外观模式定义了一个高层接口一个统一的接口,使得外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面。就像是一个网站,我们用户都是通过首页进入任意的子栏目的,并不需要记住每一个子栏目的地址进入。

        享元模式:属于对象型结构模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。运用共享技术有效支持大量细粒度对象的复用。当一个系统有大量相同或相似的对象时可以使用享元模式。

        代理模式:属于对象结构型模式。通过引入一个心新的对象来实现对真实对象的操作或者将新的对象作为真实对象的替身,这就是代理模式。

        职责链模式:属于对象行为模式。该模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无需关心处理的细节以及请求的传递,只需将请求发送到链上即可。

        命令模式:属于对象行为型模式。命令模式将发送者与接收者完全解耦,使两者之间没有直接引用的关系。命令模式将一个请求封装为一个对象,从而使我们可以使用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。

        解释器模式:属于类行为型模式。该模式是定义语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码。

        迭代器模式:属于对象行为型模式。该模式中,提供一个外部的迭代器来对聚合对象进行访问和遍历,迭代器定义了一个访问该聚合元素的接口,并且可以跟踪当前遍历的元素,了解哪些元素已经遍历过而哪些没有。

        中介者模式:属于对象行为型模式。它相当于一个聊天室,用户在聊天室里可以群发,也可以单发,中介者的作用就是使得类中的对象不用显式的进行引用,降低了对象之间的耦合度。

        备忘录模式:属于对象行为型模式。就像是可以撤销历史操作一样的功能,备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。

        观察者模式:属于对象行为型模式。将发生改变的对象成为观察目标,而被通知的对象称为观察者。观察者模式定义了一种对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关的依赖对象可以得到通知并被自动更新。

        状态模式:属于对象行为型模式。当对象的内部状态发生变化时,它的行为也随着变化,但是它的类并没有发生变化。它有效的减少了条件语句的使用,增加了运行效率。

        策略模式:属于对象行为型模式。该模式实现目的的方法有多种,将每一种方法封装成一个类,它们继承同一个父类,在需要时可以相互替换。

        模板方法模式:属于类行为型模式。该模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

        访问者模式:属于对象行为型模式。该模式封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改,接受这个操作的数据结构可以保持不变。为不同类型的元素提供多种访问操作方式,且可以在不修改原有系统的情况下增加新的操作方式。

  • 相关阅读:
    java 判断返回值的类型
    使用反射报异常:object is not an instance of declaring class解决方案
    InvocationTargetException 异常
    在MyEclipse下统计工程的代码(package、行数、类个数)
    跨域问题,及解决方案
    封装原生Ajax发送请求
    win10系统,打不开个性化,并且报错找不到指定模块
    jquery删除内容是动态修改序号
    使用jquery实现返回顶部按钮
    jquery监听video标签视频播放暂停状态
  • 原文地址:https://www.cnblogs.com/dawn-sky/p/6668212.html
Copyright © 2020-2023  润新知