• 策略模式 Strategy


    根据所给信息,选取不同策略;

    策略模式与工厂模式区别

     个人理解(工厂模式:通过所给信息建立不同的对象

          策略模式:通过所给信息选择不同的策略

        )

    • 用途不一样 
      工厂是创建型模式,它的作用就是创建对象; 
      策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;
    • 关注点不一样 
      一个关注对象创建 
      一个关注行为的封装

    • 解决不同的问题 
      工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。 
      策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。

    • 工厂相当于黑盒子,策略相当于白盒子。

      // Strategy.cpp : Defines the entry point for the console application.
      //
      
      #include "stdafx.h"
      #include <IOSTREAM>
      #include <string>
      
      using namespace std;
      class Paint{
      public:
          virtual void paint() = 0;
      };
      
      class PaintbyPen:public Paint{
      public:
          void paint(){
              cout<<"use pen to paint"<<endl;
          }
      };
      
      class PaintbyPencil:public Paint{
      public:
          void paint(){
              cout<<"use pencil to paint"<<endl;
          }
      };
      
      class Client{
      public:
          Paint * getpaint(string type){
              if("pen" == type ){
                  m_p = new PaintbyPen;
                  return m_p;
              }
              if("pencil" == type ){
                  m_p = new PaintbyPencil;
                  return m_p;
              }
          }
      private:
          Paint * m_p;
      };
      int main(int argc, char* argv[])
      {
          Client * pclient = new Client;
          Paint * p = pclient->getpaint("pencil");
          p->paint();
          return 0;
      }
  • 相关阅读:
    centos 6.4 FTP安装和配置
    常用正则表达式集锦
    同一服务器部署多个tomcat时的端口号修改详情
    介绍linux下vi命令的使用
    CentOS下安装两个或多个Tomcat7
    tomcat解析之简单web服务器(图)
    吻你
    用C++语言开发Android程序 配置开发环境
    内地开源镜像网站
    Android SDK Android NDK Android Studio 官方下载地址
  • 原文地址:https://www.cnblogs.com/xiumukediao/p/4642910.html
Copyright © 2020-2023  润新知