C++ (Qt)class taskScheduler {public: virtual void start( void ) = 0; virtual void stop( void ) = 0; virtual void addTask( void ) = 0; ...};
C++ (Qt)class defautrScheduler : public taskScheduler { void start( void ); void stop( void ); void addTask( void ); ...};
C++ (Qt)class taskScheduler {public: virtual void start( void ) = 0; virtual void stop( void ) = 0; virtual void addTask( void ) = 0; ... typedef bool (*abortProcCallback)( int percent ); private: abortProcCallback abortProc; bool isAborted; public: void setAbortProc( abortProcCallback ); bool isAborted( void ) const;};
C++ (Qt)class taskScheduler {public: virtual void start( void ) = 0; virtual void stop( void ) = 0; virtual void addTask( void ) = 0; ... typedef bool (*abortProcCallback)( int percent ); void setAbortProc( abortProcCallback ) = 0; bool isAborted( void ) const = 0;};
C++ (Qt)class taskScheduler {public:... void setAborter( CAborter * ) = 0; CAborter * getAborter( void ) = 0;};
C++ (Qt) taskScheduler abortedTaskScheduler concreteTaskScheduler
//самый простой и очевидный ОО-способ. Удобно для 95% случаев//Но не позволяет изменять алгоритм по которому выполняется масштабированиеimg.Scale(param); //процедурный стиль. Увеличивает сложность проекта из-за отрыва данных от их обработчиков.Scale(img, param); // паттерн "стратегия".// Позволяет использовать собственный алгоритм обработки, //без необходимости знать строение Imageimg.Process( Scale(param) );