设计模式

Posted 天中之云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式相关的知识,希望对你有一定的参考价值。

  1. 简单工厂模式:简单工厂模式是一种创建型模式,在简单工厂模式中,可以根据父类来创建需要的对象,无需知道你对象创建的细节。在SSH框架中的spirng中我们可以通过配置文件来实例化对象,如果我们需要改变实例化的对象时,只需要改变配置文件,不需要去修改代码。该模式适用于创建的对象比较少的编程过程中
  2. 工厂方法模式:工厂方法模式是简单工厂模式的一种扩展,他将工厂实现分别实现了不同的子类,通过继承工厂的基类来实现对不同产品的实现,这样相对于简单工厂模式来说,如果需要添加新的子类,只需要再添加这个子类工厂实现类和该子类对应的产品实现类,无需对原有的代码进行编辑,增加了对项目的扩展性。缺点就是实现的逻辑性比较强。
  3. 抽象工厂模式:抽象工厂是在工厂方法模式上的进一层扩展,在工厂方法中,对每一个产品实现了它具体的实现方法,在抽象工厂中,添加了产品族的概念,将工厂的子类实现了归类,这样就避免了子类多的情况下创建比较多的子类,但是这种模式在增加子类时,需要修改产品工厂的角色和其他所有子类的修改,这样很不方便,且不利于扩展。
  4. 建造者模式:在建造者模式中,实现了复杂对象的建造于表示的分离,该模式中有一个建造者抽象类,子类通过继承来实现不同方式的对某一对象建造,通过指挥者来实现对建造方式的调用。在客户端使用时,我们并不需要知道建造的建造细节。
  5. 原形模式:原型模式也是一种创建型模式,原型实例指定一个创建的种类,并通过复制这些原型创建一个新的对象。
  6. 单例模式:单例模式是指一个类只能创建一个对象,并且在整个程序中只能运行这个实例,该模式中在创建对象时,会检查自己本身这个对象是否被创建,如果没有进行实例化,如果创建了,就无需再进行创建,直接运用这个已经被创建的对象。这种模式可以避免某些频繁对对象的创建,节约了资源。比如数据库的连接,可以建造数据库连接池。
  7. 适配器模式:客户端往往在调用某些方法时,库中没有直接实现的该方法。而且在面对团队开发时,这是一个很大的缺点,适配器模式很好的弥补可这种缺点,适配器模式可以根据客户端的需要,可以将一个接口转化成另一个需要的接口,并通过抽象类的方法子类实现对不同适配器的构造,通过读抽象的编程实现不同适配器的使用,提供了很大的方便。
  8. 桥接模式:在一些软件系统中,有些类有多个变化的维度,对于普通的创建方式来说,这就需要我们创建较多的类来实现。桥接模式弥补了这种缺点,降低了复杂性。同时也降低了他们的强的耦合性,不同维度的实现只继承于自己维度的基类,而在实现时使用关联,这样可以使他们在各自维度进行变化而不受影响。而且桥接模式支持更多维度的,都不需要修改原有的系统
  9. 组合模式:组合模式是一种类似于树形菜单的结构,在组合模式中有抽象的构件类,叶子构件和容器构件分别继承于容器构件,他们分别实现了抽象构件的方法,通过一种递归的调用,实现了构件的操作。比如:文件夹中可以放文件,文件夹中也可以放置文件夹,如果在读取某个文件夹中的文件时,可以通过递归实现对某一文件的全部读取。这样的模式中客户端可以忽略层次的差异。
  10. 装饰模式:装饰模式中可以给对象增加一些额外的职责;该模式中有一个抽象的构件类,其中定义了一些操作,具体的构建类和抽象的装饰类分别继承于抽象的构件类,在抽象的装饰类下又继承了进一步对具体构件的操作方法,在定义了具体的构件后,可以给这个具体的构件再增加装饰,这种模式适用于动态的给对象添加一些职责。
  11. 外观模式:当系统需要对多个子系统进行操作时,需要定义一个统一的接口,直接对多个子系统进行操作,这就是外观模式,外观模式中,将多个子系统的统一操作封装在了一个外观类的实现方法中,客户端只需要调用外观类的方法,对子系统进行操作,客户端不需要知道具体的执行方法;这种模式适用于,对多个对象进行操作时,且该接口满足了大多数客户端的需要。
  12. 享元模式:一个系统中有大量的对象需要复用时可以运用到享元模式;享元模式中定义个一个抽象的享元类,有继承与它的子类,工厂方法中通过对该享元类的全部实例化,当用到哪个享元时,直接获取该对象,无需增加对对象的实例化,这样缩小了系统的内存使用率,这种思想类似于单例,单例模式中在使用时创建一个对象,而享元模式中一次创建多个对象。
  13. 代理模式:代理模式是对某一个对象提供一个代理,并由代理来提供对对象的使用,在代理模式中有一个抽象类,具体的实现类和代理类分别继承于这个抽象类,但是在代理类中关联了具体的实现类,在使用这个具体类的实现方法时,调用代理类中的方法。从某种意义上说就是代理类增加了对具体了操作的一些限制或额外的一些操作。
  14. 职责链模式:避免请求者和发送者耦合在一起,让多个请求都有可能接收请求,将这些请求拉成一条链,直到有对象处理它为止。在职责链中定义了一个抽象的处理者类,在抽象者类中有一个自类型的对象,作为下家的引用。客户端在使用时不需要知道链条的结构,只需要创建链条,降低了耦合度。

以上是关于设计模式的主要内容,如果未能解决你的问题,请参考以下文章

C#设计模式--桥接模式

23种设计模式总结

iOS中都有啥设计模式?各个设计模式的作用

86 设计模式23种设计模式概述

设计模式概述(23种设计模式目录)

设计模式