zoukankan      html  css  js  c++  java
  • 设计模式

    适配器模式(Adapter)

      why:

      使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

      when (使用场景) :

      1. 适配类的接口以匹配客户端期待的接口

      2. 某个类实现了我们所需要的服务,但它的方法名称却与客户端的期望不符

      how (使用方式) :

      1. 类的适配器:当客户端通过接口表达其需求时,实现该接口,并继承现有的类。即将客户端的调用,转换为对现有类的调用。

      2. 对象的适配器:继承客户端的类,并组合现有类的实例。即将客户端的调用,转换为对现有类的实例的调用。

      3. 接口的适配器:用抽象类实现客户端需要的接口。接着让适配器类继承该抽象类,并持有现有类的实例。

    状态模式

      why:

      将表示对象状态的逻辑分散到代表状态的不同类中。

      when:

      代码中包含大量与对象状态有关的条件语句

      how:

      关键在于,当对象的状态发生改变的时候,动态地改变对象的行为:

      1. 让主对象包含一组状态的引用。

      2. 在状态的调用中,将主对象传递给状态改变的类。

      3. 让状态类的信息提供者,仅仅给出下一个状态。

    外观模式

      why:

      降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。

      when:

      1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。

      2、定义系统的入口。

      how:

      在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。

    桥接模式

      why:

      把抽象化与实现化解耦,使得二者可以独立变化。

      when:

      实现系统可能有多个角度分类,每一种角度都可能变化。

      how:

      将抽象类的一些操作,抽取到一个接口中,并在抽象类中持有这个接口的对象。

    策略模式

      why:

      定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

      when:

      一个类的行为或其算法可以在运行时更改。

      how:

      所有的策略类实现同一个接口。在context类中,持有接口对象,可在运行时,动态传入接口实现类的引用(接口回调)。

  • 相关阅读:
    VMWare虚拟机非正常关机后无法启动
    curl: (1) Protocol "'https" not supported or disabled in libcurl的解决方法
    spring security入门
    oracle中可以使用drop、delete和truncate三个命令来删除数据库中的表
    com.github.pagehelper:pagehelper:jar:3.4.2-fix.jar
    oracle jdbc驱动 ojdbc14-10.2.0.4.0.jar 网盘下载
    PDF复制SQL语句没有换行符的解决办法
    rpm -qa | grep mysql查询不到MySQL
    新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization
    目标检测 | RetinaNet:Focal Loss for Dense Object Detection
  • 原文地址:https://www.cnblogs.com/zhouj-happy/p/6339784.html
Copyright © 2011-2022 走看看