zoukankan      html  css  js  c++  java
  • 设计模式--常用模式简介

    一、单例模式

      单例模式表示在当前进程中创建的类只有一个实例化对象;

      

    二、策略模式

      策略模式是指指对象的形为在不同的场景中具有不同的算法,基类为抽象类,派生类为实现类,通过派生类实现了不同策略,可以通过调用对象的不同具体实现不同的策略;

      1.抽象类为策略类,抽象类的派生类为实现类,多个派生类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。

      2.对客户隐藏具体策略的实现形式;

      3. 将具体实现的策略对象直接传递给使用者,如DerivedStategyA strategyA = new DerivedStategyA();

     

    三、简单工厂模式( Simple Factory )

        简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,外界通过调用工厂类的静态方法,传入不同参数从而创建不同具体产品类的实例;

        

      1.抽象产品类是具体定义产品的公共接口;

      2.Factory工厂类根据参数的不同,从而创建和返回具体的Product类的实例;

      2. 外界通过调用工厂类的静态方法,传入不同参数从而调用不同的产品类的实例;

    四、工厂方法

      工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中;

      

      1. Factory创建所有的实例;

      2. 调用时,以实例调用自己的方法;把方法推迟到派生类中去;

    五、抽象工厂

      抽象工厂(Abstract Factory Pattern)创建一组超级工厂对象为所有的工厂类提供的一个接口,而不需要指定它们的具体类;

         1. 客户端程序调用抽象工厂引用的方法,由具体工厂完成对象创建,然后客户端程序得到的是抽象产品的引用,因此使客户端代码与对象的创建分离开来。

    六、装饰器模式

       装饰器模式(Decorator Pattern)创建了一个装饰类,用来包装原有的类,并在保持类方法完整性的前提下,提供了额外的功能。装饰器模式动态地给对象添加了 一些额外的功能;

      1. Decorator和CompoImpl都继承自IComponent;

      2. Decorator中的Operation包含自身的函数,同时时调用了IComponent的Operation();

      3. 通过对象的调用顺序不同,可以生成不同顺序的结果;

    七、代理模式

     代理模式( Proxy )是一个类代理了另一个类的功能,代理类向外界提供功能访问接口;代理对象会限制外界对被代理对象的访问;

      

      代理模式的主要优点有:

    • 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
    • 代理对象可以扩展目标对象的功能;
    • 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;

      其主要缺点是:

      • 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;
      • 增加了系统的复杂度

    八、 原型模式(Prototype Pattern)

      原型模式用原型指定创建对象的种类,用于创建重复的对象;

    九、模版方法模式

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

      

       1. AbstractClass定义了所有方法的骨架;

       2. ConcreteClass继承了抽象类,是实现类,实现了函数的方法;

       3. 一个抽象类可以有任意多个实现的子类;

    十、外观模式

      外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。

        

       1. Client不与Oper操作直接联系;

       2. 所有的Oper具有统一的接口Platform,Client直接调用Platform,而不用了角Oper的任何实现与操作;

    十一、 建造者模式

      (Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象;将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

      

       1. 在BuilderAbstract抽象类中为创建Product的各个部件指定抽象接口;

       2. Product对象内部构建间的建造顺序稳定,但内部的构建通常面临着变化;

       3. 建造代码Builer与表示代码Product分离;

    十二、观察者模式

      当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)

      

    十三、适配器模式

      适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的,是两个不兼容的接口之间的桥梁;

      

      

      

  • 相关阅读:
    POJ2778 DNA Sequence AC自动机上dp
    codeforces732F Tourist Reform 边双联通分量
    codeforces786B Legacy 线段树优化建图
    洛谷P3588 PUS 线段树优化建图
    codeforces1301D Time to Run 模拟
    codeforces1303B National Project 二分或直接计算
    codeforces1303C Perfect Keyboard 模拟或判断欧拉路
    codeforces1303D Fill The Bag 二进制应用+贪心
    python之路——使用python操作mysql数据库
    python之路——mysql索引原理
  • 原文地址:https://www.cnblogs.com/anlia/p/11690912.html
Copyright © 2011-2022 走看看