当前位置: 首页 > news >正文

设计网站首页1/百度seo白皮书

设计网站首页1,百度seo白皮书,定制营销型网站,上海网站建设哪家使用list来完成一个简单的listener管理类,当增加和删除操作不频繁的时候,可以考虑用vector来代替list,提高效率。这个简单管理类有很多的设计不足,它的存在主要目的是让网友知道如何使用list,而非是如何设计listener管…
使用list来完成一个简单的listener管理类,当增加和删除操作不频繁的时候,可以考虑用vector来代替list,提高效率。这个简单管理类有很多的设计不足,它的存在主要目的是让网友知道如何使用list,而非是如何设计listener管理类。
#include <iostream>
#include <algorithm>
#include <functional>
#include <list>
#include <assert.h>

using namespace std;

class IListener
{
public:
    virtual ~IListener(){}
    virtual void notify( void *usrArg )    = 0;
};

class IListenerManager: public IListener
{
public:
    virtual ~IListenerManager(){}
    virtual bool addListener( IListener *pListener )    = 0;
    virtual bool removeListener( IListener *pListener )    = 0;
    virtual void notify( void *usrArg )                    = 0;
};


class WYQListenerManager: public IListenerManager
{
    typedef list<IListener*>::iterator    ListIterator;

    list<IListener*> manager;

    // Disable copying constructor and assigning operation
    WYQListenerManager( const WYQListenerManager &rhs );
    WYQListenerManager& operator=( const WYQListenerManager& rhs );

    struct SNotify: public binary_function<IListener*, void*, bool>
    {
        inline bool operator()( IListener *pListener, void *usrArg ) const
        {
            assert( pListener != NULL );
            pListener->notify( usrArg );

            return true;
        }
    };

    struct SDeleter: public unary_function<IListener*, void>
    {
        inline void operator()( IListener *pListener ) const
        {
            assert( pListener != NULL );
            delete pListener;
        }
    };

    void cleanup()
    {
        for_each( manager.begin(), manager.end(), SDeleter() );
    }

public:
    WYQListenerManager() : manager()
    {
        cout << "Construct WYQListener" << endl;
    }

    virtual ~WYQListenerManager()
    {
        cleanup();
        cout << "Destruct WYQListener" << endl;
    }

    virtual bool addListener( IListener *pListener )
    {
        assert( pListener != NULL );
        if ( pListener == NULL )
            return false;

        //if ( find( manager.begin(), manager.end(), pListener ) == manager.end() )
        //    return false;
        assert ( find( manager.begin(), manager.end(), pListener ) == manager.end() );
        manager.push_back( pListener );

        return true;
    }

    virtual bool removeListener( IListener *pListener )
    {
        assert( pListener != NULL );
        if ( pListener == NULL )
            return false;

        ListIterator it = find( manager.begin(), manager.end(), pListener );

        if ( it == manager.end() )
            return false;

        manager.erase( it );

        return true;
    }

    virtual void notify( void *usrArg )
    {
        for_each( manager.begin(), manager.end(), bind2nd( SNotify(), usrArg ) );
    }
};

class WYQListener: public IListener
{
    int id;

public:
    WYQListener( int _id = 0 ) : id( _id )
    {
        cout << "Construct WYQListener" << endl;
    }

    virtual ~WYQListener()
    {
        cout << "Destruct WYQListener(" <<  id << ")" << endl;
    }

    virtual void notify( void *usrArg )
    {
        cout << "[" << id << "] is notified as " << (char*)usrArg << endl;
    }
};

int main( void )
{
    WYQListenerManager manager;

    for ( int j = 0; j < 10; ++ j )
    {
        bool ok = manager.addListener( new WYQListener( j ) );
        assert( ok );
    }

    for ( int i = 0; i < 10; ++ i )
    {
        if ( i % 2 == 0 )
            manager.notify( "Even" );
    }

    return 0;
}
http://www.jmfq.cn/news/5129299.html

相关文章:

  • 鹿邑网站建设/手机推广平台有哪些
  • 南京网站设计案例/管理培训
  • 运城微信网站建设/百度识图在线网页版
  • 手机上怎么做网站/优化营商环境的措施建议
  • 流水线 东莞网站建设/百度网站打不开
  • 网站开发后台前端数据库/赣州seo排名
  • 电商网站开发商/广州网站排名优化报价
  • 网站建设 广西/互联网营销工具
  • 网上保险平台有哪些靠谱/长沙网站优化推广方案
  • 怎样宣传网站/软文推广300字
  • 聊城网站建设信息/网店代运营公司
  • 深圳做网站可用乐云seo十年/最近的重要新闻
  • 宣传片的拍摄思路/宁波谷歌seo推广公司
  • 旅游网站有哪些/搜索推广
  • 广东网站建设哪家有/seo外包多少钱
  • 淄博网站制作价格低/百度地图下载2022新版安装
  • iis网站伪静态/网络广告营销有哪些
  • 一个公司的网址是怎么样的/seo诊断网站
  • 工程在哪个网站做推广比较合适/腾讯广告投放推广平台
  • 英文网站 字体大小/站长工具亚洲
  • 深圳app网站建设哪家好/智能搜索引擎
  • dw怎么做网站布局/微博营销案例
  • 东方市住房和城乡建设局网站/网站建设选亿企网络
  • 个人写真集/沧州网站seo公司
  • 多种昆明网站建设/免费推广网址
  • 做网站需要什么配置的笔记本/什么是网站推广策略
  • 营销型网站建设 合肥/市场营销计划方案
  • 正规网站建设商家/西安关键词优化服务
  • 做正品的网站/网站推广包括
  • 如何在电脑上建设网站/痘痘该如何去除效果好