zoukankan      html  css  js  c++  java
  • 策略模式

    策略模式是将共同行为(函数)抽象成接口
    这里使用工厂方法创建策略对象使用策略模式
    strategyFactory.h

    #include "strategy.h"
    
    #pragma once
    
    class IStrategyFactory
    {
    public:
    	virtual IStrategy* CreateStrategy() = 0;
    	virtual ~IStrategyFactory(){}
    };
    
    class CTextStrategyFactory:public IStrategyFactory
    {
    public:
    	IStrategy* CreateStrategy();
    	virtual ~CTextStrategyFactory(){}
    };
    
    class CPicStrategyFactory:public IStrategyFactory
    {
    public:
    	IStrategy* CreateStrategy();
    	virtual ~CPicStrategyFactory(){}
    };
    

    strategyFactory.cpp

    #include "strategyFactory.h"
    #include "strategy.h"
    
    IStrategy* CTextStrategyFactory::CreateStrategy()
    {
    	return new CTextStrategy();
    }
    
    IStrategy* CPicStrategyFactory::CreateStrategy()
    {
    	return new CPicStrategy();
    }
    

    strategy.h

    #pragma once
    
    class IStrategy
    {
    public:
    	virtual ~IStrategy(){}
    	virtual void Split() = 0;
    	
    };
    
    class CTextStrategy:public IStrategy
    {
    public:
    	void Split();
    	virtual ~CTextStrategy(){}
    };
    
    class CPicStrategy:public IStrategy
    {
    public:
    	void Split();
    	virtual ~CPicStrategy(){}
    };
    

    strategy.cpp

    #include <iostream>
    #include "strategy.h"
    
    using namespace std;
    
    void CTextStrategy::Split()
    {
    	cout << "CTextStrategy split" << endl;
    }
    
    void CPicStrategy::Split()
    {
    	cout << "CPicStrategy split" << endl;
    }
    

    main.cpp

    #include <cstdio>
    #include "strategy.h"
    #include "strategyFactory.h"
    
    using namespace std;
    
    class CTest
    {
    public:
    	IStrategyFactory* m_PFactory;
    	IStrategy* m_Pstrategy;
    	~CTest(){if(NULL != m_Pstrategy)delete m_Pstrategy;}
    
    	CTest(IStrategyFactory* factory):m_PFactory(factory)
    	{
    		m_Pstrategy = factory->CreateStrategy();
    	}
    	void split()
    	{
    		m_Pstrategy->Split();
    	}
    };
    
    int main()
    {
    	CTextStrategyFactory TextStrategy;
    	CTest test1(&TextStrategy);
    	test1.split();
    
    	CPicStrategyFactory PicStrategy;
    	CTest test2(&PicStrategy);
    	test2.split();
    
    	return 0;
    }
    
  • 相关阅读:
    阿里云部署SSL证书详解
    PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
    APACHE服务器出现No input file specified.的完美解决方案
    Lnmp修改php.ini配置
    CGI,FASTCGI,PHPFPM的区别
    CLR Via CSharp读书笔记(25):线程基础
    Java Network Programming FAQ.
    SchemaFree MySQL vs NoSQL
    ERROR: JDWP Unable to get JNI 1.2 environment
    Firebug Internals
  • 原文地址:https://www.cnblogs.com/kuikuitage/p/10989797.html
Copyright © 2011-2022 走看看