From 986eea7a92264cc41483ed564d370a7910a68642 Mon Sep 17 00:00:00 2001 From: flykhan Date: Tue, 6 Feb 2024 17:21:37 +0800 Subject: [PATCH] initial --- DesignPatterns.pro | 61 +++ DesignPatterns.pro.user | 318 ++++++++++++ abstractfactorypattern/abstractfactory.h | 78 +++ .../abstractfactorypattern.pri | 4 + abstractfactorypattern/factoryproducer.h | 22 + abstractfactorypattern/interface.h | 103 ++++ adapterpattern/adapterpattern.pri | 3 + adapterpattern/first_interface.h | 38 ++ adapterpattern/second_interface.h | 64 +++ bin/Makefile | 474 ++++++++++++++++++ bin/Makefile.Debug | 208 ++++++++ bin/Makefile.Release | 208 ++++++++ bin/release/DesignPatterns.exe | Bin 0 -> 24064 bytes bin/release/main.obj | Bin 0 -> 107098 bytes bridgepattern/bridgepattern.pri | 3 + bridgepattern/first_interface.h | 28 ++ bridgepattern/second_interface.h | 36 ++ builderpattern/builderpattern.pri | 5 + builderpattern/foodinterface.h | 86 ++++ builderpattern/meakbuilder.h | 20 + builderpattern/meal.h | 37 ++ builderpattern/packinterface.h | 28 ++ .../chainofresponsibilitypattern.pri | 2 + chainofresponsibilitypattern/interface.h | 81 +++ commandpattern/broker.h | 22 + commandpattern/commandpattern.pri | 4 + commandpattern/interface.h | 34 ++ commandpattern/stock.h | 20 + compositepattern/compositepattern.pri | 2 + compositepattern/employee.h | 35 ++ decoratorpattern/decoratorpattern.pri | 3 + decoratorpattern/first_interface.h | 28 ++ decoratorpattern/second_interface.h | 33 ++ facadepattern/facadepattern.pri | 3 + facadepattern/interface.h | 37 ++ facadepattern/shapemaker.h | 29 ++ factorypattern/factorypattern.pri | 3 + factorypattern/interface.h | 52 ++ factorypattern/shapefactory.h | 26 + flyweightpattern/flyweightpattern.pri | 3 + flyweightpattern/interface.h | 42 ++ flyweightpattern/shapefactory.h | 23 + interpreterpattern/interface.h | 65 +++ interpreterpattern/interpreterpattern.pri | 2 + iteratorpattern/interface.h | 61 +++ iteratorpattern/iteratorpattern.pri | 2 + main.cpp | 331 ++++++++++++ mediatorpattern/chatroom.h | 25 + mediatorpattern/mediatorpattern.pri | 3 + mediatorpattern/usr.h | 26 + mementopattern/caretaker.h | 22 + mementopattern/memento.h | 20 + mementopattern/mementopattern.pri | 4 + mementopattern/originator.h | 25 + observerpattern/interface.h | 37 ++ observerpattern/observerpattern.pri | 3 + observerpattern/subject.h | 37 ++ prototypepattern/interface.h | 40 ++ prototypepattern/prototypepattern.pri | 2 + proxypattern/interface.h | 52 ++ proxypattern/proxypattern.pri | 2 + singletonpattern/singletonpattern.h | 83 +++ singletonpattern/singletonpattern.pri | 2 + statepattern/context.h | 21 + statepattern/interface.h | 41 ++ statepattern/statepattern.pri | 6 + strategypattern/context.h | 14 + strategypattern/interface.h | 34 ++ strategypattern/strategypattern.pri | 0 templatepattern/interface.h | 52 ++ templatepattern/templatepattern.pri | 2 + visitorpattern/father.h | 26 + visitorpattern/son.h | 92 ++++ visitorpattern/visitorpattern.pri | 3 + 74 files changed, 3441 insertions(+) create mode 100644 DesignPatterns.pro create mode 100644 DesignPatterns.pro.user create mode 100644 abstractfactorypattern/abstractfactory.h create mode 100644 abstractfactorypattern/abstractfactorypattern.pri create mode 100644 abstractfactorypattern/factoryproducer.h create mode 100644 abstractfactorypattern/interface.h create mode 100644 adapterpattern/adapterpattern.pri create mode 100644 adapterpattern/first_interface.h create mode 100644 adapterpattern/second_interface.h create mode 100644 bin/Makefile create mode 100644 bin/Makefile.Debug create mode 100644 bin/Makefile.Release create mode 100644 bin/release/DesignPatterns.exe create mode 100644 bin/release/main.obj create mode 100644 bridgepattern/bridgepattern.pri create mode 100644 bridgepattern/first_interface.h create mode 100644 bridgepattern/second_interface.h create mode 100644 builderpattern/builderpattern.pri create mode 100644 builderpattern/foodinterface.h create mode 100644 builderpattern/meakbuilder.h create mode 100644 builderpattern/meal.h create mode 100644 builderpattern/packinterface.h create mode 100644 chainofresponsibilitypattern/chainofresponsibilitypattern.pri create mode 100644 chainofresponsibilitypattern/interface.h create mode 100644 commandpattern/broker.h create mode 100644 commandpattern/commandpattern.pri create mode 100644 commandpattern/interface.h create mode 100644 commandpattern/stock.h create mode 100644 compositepattern/compositepattern.pri create mode 100644 compositepattern/employee.h create mode 100644 decoratorpattern/decoratorpattern.pri create mode 100644 decoratorpattern/first_interface.h create mode 100644 decoratorpattern/second_interface.h create mode 100644 facadepattern/facadepattern.pri create mode 100644 facadepattern/interface.h create mode 100644 facadepattern/shapemaker.h create mode 100644 factorypattern/factorypattern.pri create mode 100644 factorypattern/interface.h create mode 100644 factorypattern/shapefactory.h create mode 100644 flyweightpattern/flyweightpattern.pri create mode 100644 flyweightpattern/interface.h create mode 100644 flyweightpattern/shapefactory.h create mode 100644 interpreterpattern/interface.h create mode 100644 interpreterpattern/interpreterpattern.pri create mode 100644 iteratorpattern/interface.h create mode 100644 iteratorpattern/iteratorpattern.pri create mode 100644 main.cpp create mode 100644 mediatorpattern/chatroom.h create mode 100644 mediatorpattern/mediatorpattern.pri create mode 100644 mediatorpattern/usr.h create mode 100644 mementopattern/caretaker.h create mode 100644 mementopattern/memento.h create mode 100644 mementopattern/mementopattern.pri create mode 100644 mementopattern/originator.h create mode 100644 observerpattern/interface.h create mode 100644 observerpattern/observerpattern.pri create mode 100644 observerpattern/subject.h create mode 100644 prototypepattern/interface.h create mode 100644 prototypepattern/prototypepattern.pri create mode 100644 proxypattern/interface.h create mode 100644 proxypattern/proxypattern.pri create mode 100644 singletonpattern/singletonpattern.h create mode 100644 singletonpattern/singletonpattern.pri create mode 100644 statepattern/context.h create mode 100644 statepattern/interface.h create mode 100644 statepattern/statepattern.pri create mode 100644 strategypattern/context.h create mode 100644 strategypattern/interface.h create mode 100644 strategypattern/strategypattern.pri create mode 100644 templatepattern/interface.h create mode 100644 templatepattern/templatepattern.pri create mode 100644 visitorpattern/father.h create mode 100644 visitorpattern/son.h create mode 100644 visitorpattern/visitorpattern.pri diff --git a/DesignPatterns.pro b/DesignPatterns.pro new file mode 100644 index 0000000..3613175 --- /dev/null +++ b/DesignPatterns.pro @@ -0,0 +1,61 @@ +QT += core +QT -= gui + +CONFIG += c++11 + +TARGET = DesignPatterns +CONFIG += console +CONFIG -= app_bundle + +TEMPLATE = app + +SOURCES += main.cpp + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which as been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +include(factorypattern/factorypattern.pri)#工厂模式 +include(singletonpattern/singletonpattern.pri)#单例模式 +include(proxypattern/proxypattern.pri)#代理模式 +include(templatepattern/templatepattern.pri)#模版模式 +include(strategypattern/strategypattern.pri)#策略模式 +include(flyweightpattern/flyweightpattern.pri)#享元模式 +include(visitorpattern/visitorpattern.pri)#访问者模式 +include(mediatorpattern/mediatorpattern.pri)#中介者模式 +include(observerpattern/observerpattern.pri)#观察者模式 +include(statepattern/statepattern.pri)#状态模式 +include(commandpattern/commandpattern.pri)#命令模式 +include(decoratorpattern/decoratorpattern.pri)#装饰模式 +include(bridgepattern/bridgepattern.pri)#桥接模式 +include(iteratorpattern/iteratorpattern.pri)#迭代器模式 +include(compositepattern/compositepattern.pri)#组合模式 +include(facadepattern/facadepattern.pri)#外观模式 +include(adapterpattern/adapterpattern.pri)#适配器模式 +include(abstractfactorypattern/abstractfactorypattern.pri)#抽象工厂模式 +include(builderpattern/builderpattern.pri)#建造者模式 +include(prototypepattern/prototypepattern.pri)#原型模式 +include(interpreterpattern/interpreterpattern.pri)#解释器模式 +include(chainofresponsibilitypattern/chainofresponsibilitypattern.pri)#责任链模式 +include(mementopattern/mementopattern.pri)#备忘录模式 + + + + + + + + + + + + + + diff --git a/DesignPatterns.pro.user b/DesignPatterns.pro.user new file mode 100644 index 0000000..9b63d1b --- /dev/null +++ b/DesignPatterns.pro.user @@ -0,0 +1,318 @@ + + + + + + EnvironmentId + {f6048ee0-a648-46d2-9ec4-234de25ff265} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + System + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop Qt 5.8.0 MSVC2013 32bit + Desktop Qt 5.8.0 MSVC2013 32bit + qt.58.win32_msvc2013_kit + 0 + 0 + 0 + + C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Debug + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + 鏋勫缓 + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + 娓呯悊 + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Debug + + Qt4ProjectManager.Qt4BuildConfiguration + 2 + true + + + C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Release + + + true + qmake + + QtProjectManager.QMakeBuildStep + false + + false + false + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + 鏋勫缓 + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + 娓呯悊 + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Release + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + + C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Profile + + + true + qmake + + QtProjectManager.QMakeBuildStep + true + + false + true + false + + + true + Make + + Qt4ProjectManager.MakeStep + + false + + + + 2 + 鏋勫缓 + + ProjectExplorer.BuildSteps.Build + + + + true + Make + + Qt4ProjectManager.MakeStep + + true + clean + + + 1 + 娓呯悊 + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Profile + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + true + + 3 + + + 0 + 閮ㄧ讲 + + ProjectExplorer.BuildSteps.Deploy + + 1 + 鍦ㄦ湰鍦伴儴缃 + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + -1 + + DesignPatterns + + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/liubo/Desktop/VSCode Projects/DesignPatterns/DesignPatterns.pro + true + + DesignPatterns.pro + false + + + 3768 + false + true + false + false + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/abstractfactorypattern/abstractfactory.h b/abstractfactorypattern/abstractfactory.h new file mode 100644 index 0000000..f8afa25 --- /dev/null +++ b/abstractfactorypattern/abstractfactory.h @@ -0,0 +1,78 @@ +#include "interface.h" +#include + +class AbstractFactory +{ +public: + AbstractFactory() + { + cout << "create AbstractFactory" << endl; + } + virtual ~AbstractFactory(){} + virtual Shape * getShape(string type) = 0; + virtual Color * getColor(string type) = 0; +}; + +class ShapeFactory: public AbstractFactory +{ +public: + ShapeFactory() + { + cout << "create ShapeFactory" << endl; + } + Shape * getShape(string type) + { + if (type.compare("Circle") == 0) + { + return new Circle(); + } + else if (type.compare("Square") == 0) + { + return new Square(); + } + else if (type.compare("Rectangle") == 0) + { + return new Rectangle(); + } + else + { + return nullptr; + } + } + Color * getColor(string type) + { + return nullptr; + } +}; + +class ColorFactory: public AbstractFactory +{ +public: + ColorFactory() + { + cout << "create ColorFactory" << endl; + } + Color *getColor(string type) + { + if (type.compare("Red") == 0) + { + return new Red(); + } + else if (type.compare("Green") == 0) + { + return new Green(); + } + else if (type.compare("Blue") == 0) + { + return new Blue(); + } + else + { + return nullptr; + } + } + Shape * getShape(string type) + { + return nullptr; + } +}; diff --git a/abstractfactorypattern/abstractfactorypattern.pri b/abstractfactorypattern/abstractfactorypattern.pri new file mode 100644 index 0000000..c471047 --- /dev/null +++ b/abstractfactorypattern/abstractfactorypattern.pri @@ -0,0 +1,4 @@ +HEADERS += \ + $$PWD/interface.h \ + $$PWD/abstractfactory.h \ + $$PWD/factoryproducer.h diff --git a/abstractfactorypattern/factoryproducer.h b/abstractfactorypattern/factoryproducer.h new file mode 100644 index 0000000..2910dc5 --- /dev/null +++ b/abstractfactorypattern/factoryproducer.h @@ -0,0 +1,22 @@ +#include "abstractfactory.h" + +class FactoryProducer +{ +public: + FactoryProducer(){} + AbstractFactory *getFactory(string type) + { + if (type.compare("ShapeFactory") == 0) + { + return new ShapeFactory(); + } + else if (type.compare("ColorFactory") == 0) + { + return new ColorFactory(); + } + else + { + return nullptr; + } + } +}; diff --git a/abstractfactorypattern/interface.h b/abstractfactorypattern/interface.h new file mode 100644 index 0000000..ddaa5b2 --- /dev/null +++ b/abstractfactorypattern/interface.h @@ -0,0 +1,103 @@ +#include +using namespace std; + +class Shape +{ +public: + Shape() + { + cout << "create Shape" << endl; + + } + virtual ~Shape(){} + virtual void draw() = 0; +}; + +class Circle: public Shape +{ +public: + Circle() + { + cout << "create Circle" << endl; + } + void draw() + { + cout << "draw Circle" << endl; + } +}; + +class Square: public Shape +{ +public: + Square() + { + cout << "create Square" << endl; + } + void draw() + { + cout << "draw Square" << endl; + } +}; + +class Rectangle: public Shape +{ +public: + Rectangle() + { + cout << "create Rectangle" << endl; + } + void draw() + { + cout << "draw Rectangle" << endl; + } +}; + +class Color +{ +public: + Color() + { + cout << "create Color" << endl; + } + virtual ~Color(){} + virtual void fill() = 0; +}; + +class Red: public Color +{ +public: + Red() + { + cout << "create Red" << endl; + } + void fill() + { + cout << "fill Red" << endl; + } +}; + +class Green: public Color +{ +public: + Green() + { + cout << "create Green" << endl; + } + void fill() + { + cout << "fill Green" << endl; + } +}; + +class Blue: public Color +{ +public: + Blue() + { + cout << "create Blue" << endl; + } + void fill() + { + cout << "fill Blue" << endl; + } +}; diff --git a/adapterpattern/adapterpattern.pri b/adapterpattern/adapterpattern.pri new file mode 100644 index 0000000..be78595 --- /dev/null +++ b/adapterpattern/adapterpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/first_interface.h \ + $$PWD/second_interface.h diff --git a/adapterpattern/first_interface.h b/adapterpattern/first_interface.h new file mode 100644 index 0000000..d74e36b --- /dev/null +++ b/adapterpattern/first_interface.h @@ -0,0 +1,38 @@ +#include +#include +using namespace std; + +class AdvancedMediaPlayer +{ +public: + AdvancedMediaPlayer(){} + virtual ~AdvancedMediaPlayer(){} + virtual void playVlc(string fileName) = 0; + virtual void playMp4(string fileName) = 0; +}; + +class VlcPlayer: public AdvancedMediaPlayer +{ +public: + void playVlc(string fileName) + { + cout << "Playing vlc file. Name: " + fileName << endl; + } + void playMp4(string fileName) + { + cout << fileName + " do nothing" << endl; + } +}; + +class Mp4Player: public AdvancedMediaPlayer +{ +public: + void playVlc(string fileName) + { + cout << fileName + " do nothing" << endl; + } + void playMp4(string fileName) + { + cout << "Playing mp4 file. Name: " + fileName << endl; + } +}; diff --git a/adapterpattern/second_interface.h b/adapterpattern/second_interface.h new file mode 100644 index 0000000..8b002c3 --- /dev/null +++ b/adapterpattern/second_interface.h @@ -0,0 +1,64 @@ +#include "first_interface.h" + +class MediaPlayer +{ +public: + MediaPlayer(){} + virtual ~MediaPlayer(){} + virtual void play(string audioType, string fileName) = 0; +}; + +class MediaAdapter: public MediaPlayer +{ +public: + MediaAdapter(string audioType) + { + if (audioType == "vlc") + { + player = new VlcPlayer(); + } + else if(audioType == "mp4") + { + player = new Mp4Player(); + } + else + { + player = nullptr; + } + } + void play(string audioType, string fileName) + { + if (audioType == "vlc") + { + player->playVlc(fileName); + } + else if(audioType == "mp4") + { + player->playMp4(fileName); + } + } + +public: + AdvancedMediaPlayer *player; +}; + +class AudioPlayer: public MediaPlayer +{ +public: + void play(string audioType, string fileName) + { + if (audioType == "mp3") + { + cout << "Playing mp3 file. Name: " + fileName << endl; + } + else if(audioType == "mp4" || audioType == "vlc") + { + MediaAdapter * adapter = new MediaAdapter(audioType); + adapter->play(audioType, fileName); + } + else + { + cout << "Invalid media. " + audioType + " format not supported"; + } + } +}; diff --git a/bin/Makefile b/bin/Makefile new file mode 100644 index 0000000..3c19a5e --- /dev/null +++ b/bin/Makefile @@ -0,0 +1,474 @@ +############################################################################# +# Makefile for building: DesignPatterns +# Generated by qmake (3.0) (Qt 5.7.1) +# Project: ..\DesignPatterns.pro +# Template: app +# Command: D:\Qt5.7.1-64\5.7\msvc2015_64\bin\qmake.exe -spec win32-msvc2015 -o Makefile ..\DesignPatterns.pro +############################################################################# + +MAKEFILE = Makefile + +first: release +install: release-install +uninstall: release-uninstall +QMAKE = D:\Qt5.7.1-64\5.7\msvc2015_64\bin\qmake.exe +DEL_FILE = del +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +COPY = copy /y +COPY_FILE = copy /y +COPY_DIR = xcopy /s /q /y /i +INSTALL_FILE = copy /y +INSTALL_PROGRAM = copy /y +INSTALL_DIR = xcopy /s /q /y /i +DEL_FILE = del +SYMLINK = $(QMAKE) -install ln -f -s +DEL_DIR = rmdir +MOVE = move +SUBTARGETS = \ + release \ + debug + + +release: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release +release-make_first: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release +release-all: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release all +release-clean: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release clean +release-distclean: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release distclean +release-install: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release install +release-uninstall: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release uninstall +debug: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug +debug-make_first: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug +debug-all: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug all +debug-clean: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug clean +debug-distclean: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug distclean +debug-install: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug install +debug-uninstall: FORCE + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug uninstall + +Makefile: ..\DesignPatterns.pro D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015\qmake.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_pre.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\angle.conf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-base.conf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-desktop.conf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\qconfig.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_clucene_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_platformsupport_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_functions.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_config.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\qt_config.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015\qmake.conf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_post.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\toolchain.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_pre.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\default_pre.prf \ + ..\factorypattern\factorypattern.pri \ + ..\singletonpattern\singletonpattern.pri \ + ..\proxypattern\proxypattern.pri \ + ..\templatepattern\templatepattern.pri \ + ..\strategypattern\strategypattern.pri \ + ..\flyweightpattern\flyweightpattern.pri \ + ..\visitorpattern\visitorpattern.pri \ + ..\mediatorpattern\mediatorpattern.pri \ + ..\observerpattern\observerpattern.pri \ + ..\statepattern\statepattern.pri \ + ..\commandpattern\commandpattern.pri \ + ..\decoratorpattern\decoratorpattern.pri \ + ..\bridgepattern\bridgepattern.pri \ + ..\iteratorpattern\iteratorpattern.pri \ + ..\compositepattern\compositepattern.pri \ + ..\facadepattern\facadepattern.pri \ + ..\adapterpattern\adapterpattern.pri \ + ..\abstractfactorypattern\abstractfactorypattern.pri \ + ..\builderpattern\builderpattern.pri \ + ..\prototypepattern\prototypepattern.pri \ + ..\interpreterpattern\interpreterpattern.pri \ + ..\chainofresponsibilitypattern\chainofresponsibilitypattern.pri \ + ..\mementopattern\mementopattern.pri \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resolve_config.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds_post.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_post.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\console.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\rtti.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\precompile_header.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\warn_on.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resources.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\moc.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\file_copies.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\testcase_targets.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exceptions.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\yacc.prf \ + D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\lex.prf \ + ..\DesignPatterns.pro \ + D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Core.prl + $(QMAKE) -spec win32-msvc2015 -o Makefile ..\DesignPatterns.pro +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_pre.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\angle.conf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-base.conf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-desktop.conf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\qconfig.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_clucene_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_platformsupport_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_functions.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_config.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\qt_config.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015\qmake.conf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_post.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\toolchain.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_pre.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\default_pre.prf: +..\factorypattern\factorypattern.pri: +..\singletonpattern\singletonpattern.pri: +..\proxypattern\proxypattern.pri: +..\templatepattern\templatepattern.pri: +..\strategypattern\strategypattern.pri: +..\flyweightpattern\flyweightpattern.pri: +..\visitorpattern\visitorpattern.pri: +..\mediatorpattern\mediatorpattern.pri: +..\observerpattern\observerpattern.pri: +..\statepattern\statepattern.pri: +..\commandpattern\commandpattern.pri: +..\decoratorpattern\decoratorpattern.pri: +..\bridgepattern\bridgepattern.pri: +..\iteratorpattern\iteratorpattern.pri: +..\compositepattern\compositepattern.pri: +..\facadepattern\facadepattern.pri: +..\adapterpattern\adapterpattern.pri: +..\abstractfactorypattern\abstractfactorypattern.pri: +..\builderpattern\builderpattern.pri: +..\prototypepattern\prototypepattern.pri: +..\interpreterpattern\interpreterpattern.pri: +..\chainofresponsibilitypattern\chainofresponsibilitypattern.pri: +..\mementopattern\mementopattern.pri: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resolve_config.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds_post.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_post.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\console.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\rtti.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\precompile_header.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\warn_on.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resources.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\moc.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\file_copies.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\testcase_targets.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exceptions.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\yacc.prf: +D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\lex.prf: +..\DesignPatterns.pro: +D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Core.prl: +qmake: FORCE + @$(QMAKE) -spec win32-msvc2015 -o Makefile ..\DesignPatterns.pro + +qmake_all: FORCE + +make_first: release-make_first debug-make_first FORCE +all: release-all debug-all FORCE +clean: release-clean debug-clean FORCE + -$(DEL_FILE) DesignPatterns.exp +distclean: release-distclean debug-distclean FORCE + -$(DEL_FILE) Makefile + -$(DEL_FILE) DesignPatterns.lib + +release-mocclean: + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release mocclean +debug-mocclean: + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug mocclean +mocclean: release-mocclean debug-mocclean + +release-mocables: + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Release mocables +debug-mocables: + @set MAKEFLAGS=$(MAKEFLAGS) + $(MAKE) -f $(MAKEFILE).Debug mocables +mocables: release-mocables debug-mocables + +check: first + +benchmark: first +FORCE: + +$(MAKEFILE).Release: Makefile +$(MAKEFILE).Debug: Makefile diff --git a/bin/Makefile.Debug b/bin/Makefile.Debug new file mode 100644 index 0000000..65ceb9e --- /dev/null +++ b/bin/Makefile.Debug @@ -0,0 +1,208 @@ +############################################################################# +# Makefile for building: DesignPatterns +# Generated by qmake (3.0) (Qt 5.7.1) +# Project: ..\DesignPatterns.pro +# Template: app +############################################################################# + +MAKEFILE = Makefile.Debug + +####### Compiler, tools and options + +CC = cl +CXX = cl +DEFINES = -DUNICODE -DWIN32 -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_CORE_LIB +CFLAGS = -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zi -MDd -W3 -w44456 -w44457 -w44458 /Fddebug\DesignPatterns.vc.pdb $(DEFINES) +CXXFLAGS = -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\DesignPatterns.vc.pdb $(DEFINES) +INCPATH = -I..\..\DesignPatterns -I. -ID:\Qt5.7.1-64\5.7\msvc2015_64\include -ID:\Qt5.7.1-64\5.7\msvc2015_64\include\QtCore -Idebug -ID:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015 +LINKER = link +LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" +LIBS = /LIBPATH:D:\Qt5.7.1-64\5.7\msvc2015_64\lib D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Cored.lib +QMAKE = D:\Qt5.7.1-64\5.7\msvc2015_64\bin\qmake.exe +IDC = idc +IDL = midl +ZIP = zip -r -9 +DEF_FILE = +RES_FILE = +COPY = copy /y +SED = $(QMAKE) -install sed +COPY_FILE = copy /y +COPY_DIR = xcopy /s /q /y /i +DEL_FILE = del +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +INSTALL_FILE = copy /y +INSTALL_PROGRAM = copy /y +INSTALL_DIR = xcopy /s /q /y /i + +####### Output directory + +OBJECTS_DIR = debug + +####### Files + +SOURCES = ..\main.cpp +OBJECTS = debug\main.obj + +DIST = ..\factorypattern\interface.h \ + ..\factorypattern\shapefactory.h \ + ..\singletonpattern\singletonpattern.h \ + ..\proxypattern\interface.h \ + ..\templatepattern\interface.h \ + ..\flyweightpattern\interface.h \ + ..\flyweightpattern\shapefactory.h \ + ..\visitorpattern\father.h \ + ..\visitorpattern\son.h \ + ..\mediatorpattern\chatroom.h \ + ..\mediatorpattern\usr.h \ + ..\observerpattern\interface.h \ + ..\observerpattern\subject.h \ + ..\statepattern\memento.h \ + ..\statepattern\originator.h \ + ..\statepattern\caretaker.h \ + ..\statepattern\context.h \ + ..\statepattern\interface.h \ + ..\commandpattern\stock.h \ + ..\commandpattern\interface.h \ + ..\commandpattern\broker.h \ + ..\decoratorpattern\first_interface.h \ + ..\decoratorpattern\second_interface.h \ + ..\bridgepattern\first_interface.h \ + ..\bridgepattern\second_interface.h \ + ..\iteratorpattern\interface.h \ + ..\compositepattern\employee.h \ + ..\facadepattern\interface.h \ + ..\facadepattern\shapemaker.h \ + ..\adapterpattern\first_interface.h \ + ..\adapterpattern\second_interface.h \ + ..\abstractfactorypattern\interface.h \ + ..\abstractfactorypattern\abstractfactory.h \ + ..\abstractfactorypattern\factoryproducer.h \ + ..\builderpattern\packinterface.h \ + ..\builderpattern\foodinterface.h \ + ..\builderpattern\meal.h \ + ..\builderpattern\meakbuilder.h \ + ..\prototypepattern\interface.h \ + ..\interpreterpattern\interface.h \ + ..\chainofresponsibilitypattern\interface.h \ + ..\mementopattern\memento.h \ + ..\mementopattern\originator.h \ + ..\mementopattern\caretaker.h ..\main.cpp +QMAKE_TARGET = DesignPatterns +DESTDIR = debug\ #avoid trailing-slash linebreak +TARGET = DesignPatterns.exe +DESTDIR_TARGET = debug\DesignPatterns.exe + +####### Implicit rules + +.SUFFIXES: .c .cpp .cc .cxx + +{..}.cpp{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{..}.cc{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{..}.cxx{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{..}.c{debug\}.obj:: + $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{.}.cpp{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{.}.cc{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{.}.cxx{debug\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +{.}.c{debug\}.obj:: + $(CC) -c $(CFLAGS) $(INCPATH) -Fodebug\ @<< + $< +<< + +####### Build rules + +first: all +all: Makefile.Debug $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) /MANIFEST:embed /OUT:$(DESTDIR_TARGET) @<< +$(OBJECTS) $(LIBS) +<< + +qmake: FORCE + @$(QMAKE) -spec win32-msvc2015 -o Makefile.Debug ..\DesignPatterns.pro + +qmake_all: FORCE + +dist: + $(ZIP) DesignPatterns.zip $(SOURCES) $(DIST) ..\DesignPatterns.pro D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_pre.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\angle.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-base.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-desktop.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\qconfig.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_clucene_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_platformsupport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_functions.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\qt_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015\qmake.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\toolchain.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_pre.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\default_pre.prf ..\factorypattern\factorypattern.pri ..\singletonpattern\singletonpattern.pri ..\proxypattern\proxypattern.pri ..\templatepattern\templatepattern.pri ..\strategypattern\strategypattern.pri ..\flyweightpattern\flyweightpattern.pri ..\visitorpattern\visitorpattern.pri ..\mediatorpattern\mediatorpattern.pri ..\observerpattern\observerpattern.pri ..\statepattern\statepattern.pri ..\commandpattern\commandpattern.pri ..\decoratorpattern\decoratorpattern.pri ..\bridgepattern\bridgepattern.pri ..\iteratorpattern\iteratorpattern.pri ..\compositepattern\compositepattern.pri ..\facadepattern\facadepattern.pri ..\adapterpattern\adapterpattern.pri ..\abstractfactorypattern\abstractfactorypattern.pri ..\builderpattern\builderpattern.pri ..\prototypepattern\prototypepattern.pri ..\interpreterpattern\interpreterpattern.pri ..\chainofresponsibilitypattern\chainofresponsibilitypattern.pri ..\mementopattern\mementopattern.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resolve_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\build_pass.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\console.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\rtti.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\precompile_header.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\warn_on.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resources.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\moc.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\file_copies.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\testcase_targets.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exceptions.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\yacc.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\lex.prf ..\DesignPatterns.pro D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Cored.prl NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) debug\main.obj + -$(DEL_FILE) debug\DesignPatterns.exp debug\DesignPatterns.vc.pdb debug\DesignPatterns.ilk debug\DesignPatterns.idb + +distclean: clean + -$(DEL_FILE) debug\DesignPatterns.lib debug\DesignPatterns.pdb + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Debug + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +benchmark: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + + + +####### Compile + +debug\main.obj: ..\main.cpp ../mementopattern/originator.h \ + ../mementopattern/memento.h \ + ../mementopattern/caretaker.h + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/bin/Makefile.Release b/bin/Makefile.Release new file mode 100644 index 0000000..c98fc7a --- /dev/null +++ b/bin/Makefile.Release @@ -0,0 +1,208 @@ +############################################################################# +# Makefile for building: DesignPatterns +# Generated by qmake (3.0) (Qt 5.7.1) +# Project: ..\DesignPatterns.pro +# Template: app +############################################################################# + +MAKEFILE = Makefile.Release + +####### Compiler, tools and options + +CC = cl +CXX = cl +DEFINES = -DUNICODE -DWIN32 -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG +CFLAGS = -nologo -Zc:wchar_t -FS -Zc:strictStrings -O2 -MD -W3 -w44456 -w44457 -w44458 $(DEFINES) +CXXFLAGS = -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc $(DEFINES) +INCPATH = -I..\..\DesignPatterns -I. -ID:\Qt5.7.1-64\5.7\msvc2015_64\include -ID:\Qt5.7.1-64\5.7\msvc2015_64\include\QtCore -Irelease -ID:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015 +LINKER = link +LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" +LIBS = /LIBPATH:D:\Qt5.7.1-64\5.7\msvc2015_64\lib D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Core.lib +QMAKE = D:\Qt5.7.1-64\5.7\msvc2015_64\bin\qmake.exe +IDC = idc +IDL = midl +ZIP = zip -r -9 +DEF_FILE = +RES_FILE = +COPY = copy /y +SED = $(QMAKE) -install sed +COPY_FILE = copy /y +COPY_DIR = xcopy /s /q /y /i +DEL_FILE = del +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +INSTALL_FILE = copy /y +INSTALL_PROGRAM = copy /y +INSTALL_DIR = xcopy /s /q /y /i + +####### Output directory + +OBJECTS_DIR = release + +####### Files + +SOURCES = ..\main.cpp +OBJECTS = release\main.obj + +DIST = ..\factorypattern\interface.h \ + ..\factorypattern\shapefactory.h \ + ..\singletonpattern\singletonpattern.h \ + ..\proxypattern\interface.h \ + ..\templatepattern\interface.h \ + ..\flyweightpattern\interface.h \ + ..\flyweightpattern\shapefactory.h \ + ..\visitorpattern\father.h \ + ..\visitorpattern\son.h \ + ..\mediatorpattern\chatroom.h \ + ..\mediatorpattern\usr.h \ + ..\observerpattern\interface.h \ + ..\observerpattern\subject.h \ + ..\statepattern\memento.h \ + ..\statepattern\originator.h \ + ..\statepattern\caretaker.h \ + ..\statepattern\context.h \ + ..\statepattern\interface.h \ + ..\commandpattern\stock.h \ + ..\commandpattern\interface.h \ + ..\commandpattern\broker.h \ + ..\decoratorpattern\first_interface.h \ + ..\decoratorpattern\second_interface.h \ + ..\bridgepattern\first_interface.h \ + ..\bridgepattern\second_interface.h \ + ..\iteratorpattern\interface.h \ + ..\compositepattern\employee.h \ + ..\facadepattern\interface.h \ + ..\facadepattern\shapemaker.h \ + ..\adapterpattern\first_interface.h \ + ..\adapterpattern\second_interface.h \ + ..\abstractfactorypattern\interface.h \ + ..\abstractfactorypattern\abstractfactory.h \ + ..\abstractfactorypattern\factoryproducer.h \ + ..\builderpattern\packinterface.h \ + ..\builderpattern\foodinterface.h \ + ..\builderpattern\meal.h \ + ..\builderpattern\meakbuilder.h \ + ..\prototypepattern\interface.h \ + ..\interpreterpattern\interface.h \ + ..\chainofresponsibilitypattern\interface.h \ + ..\mementopattern\memento.h \ + ..\mementopattern\originator.h \ + ..\mementopattern\caretaker.h ..\main.cpp +QMAKE_TARGET = DesignPatterns +DESTDIR = release\ #avoid trailing-slash linebreak +TARGET = DesignPatterns.exe +DESTDIR_TARGET = release\DesignPatterns.exe + +####### Implicit rules + +.SUFFIXES: .c .cpp .cc .cxx + +{..}.cpp{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{..}.cc{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{..}.cxx{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{..}.c{release\}.obj:: + $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{.}.cpp{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{.}.cc{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{.}.cxx{release\}.obj:: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +{.}.c{release\}.obj:: + $(CC) -c $(CFLAGS) $(INCPATH) -Forelease\ @<< + $< +<< + +####### Build rules + +first: all +all: Makefile.Release $(DESTDIR_TARGET) + +$(DESTDIR_TARGET): $(OBJECTS) + $(LINKER) $(LFLAGS) /MANIFEST:embed /OUT:$(DESTDIR_TARGET) @<< +$(OBJECTS) $(LIBS) +<< + +qmake: FORCE + @$(QMAKE) -spec win32-msvc2015 -o Makefile.Release ..\DesignPatterns.pro + +qmake_all: FORCE + +dist: + $(ZIP) DesignPatterns.zip $(SOURCES) $(DIST) ..\DesignPatterns.pro D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_pre.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\angle.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-base.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\common\msvc-desktop.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\qconfig.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dcore_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dinput_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dlogic_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquick_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickinput_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3dquickrender_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_3drender_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axbase_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axcontainer_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_axserver_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bluetooth_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_bootstrap_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_charts_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_clucene_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_concurrent_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_core_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_datavisualization_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_dbus_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designer_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_designercomponents_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gamepad_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_gui_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_help_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_location_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimedia_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_multimediawidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_network_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_nfc_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_opengl_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_openglextensions_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_packetprotocol_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_platformsupport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_positioning_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_printsupport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_purchasing_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldebug_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmldevtools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qmltest_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quick_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickcontrols2_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickparticles_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quicktemplates2_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_quickwidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_script_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scripttools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_scxml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sensors_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialbus_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_serialport_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_sql_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_svg_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_testlib_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uiplugin.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_uitools_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webchannel_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webengine_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecore_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginecoreheaders_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webenginewidgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_websockets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_webview_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_widgets_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_winextras_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xml_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_xmlpatterns_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\modules\qt_lib_zlib_private.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_functions.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\qt_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\win32-msvc2015\qmake.conf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\spec_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\toolchain.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_pre.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\default_pre.prf ..\factorypattern\factorypattern.pri ..\singletonpattern\singletonpattern.pri ..\proxypattern\proxypattern.pri ..\templatepattern\templatepattern.pri ..\strategypattern\strategypattern.pri ..\flyweightpattern\flyweightpattern.pri ..\visitorpattern\visitorpattern.pri ..\mediatorpattern\mediatorpattern.pri ..\observerpattern\observerpattern.pri ..\statepattern\statepattern.pri ..\commandpattern\commandpattern.pri ..\decoratorpattern\decoratorpattern.pri ..\bridgepattern\bridgepattern.pri ..\iteratorpattern\iteratorpattern.pri ..\compositepattern\compositepattern.pri ..\facadepattern\facadepattern.pri ..\adapterpattern\adapterpattern.pri ..\abstractfactorypattern\abstractfactorypattern.pri ..\builderpattern\builderpattern.pri ..\prototypepattern\prototypepattern.pri ..\interpreterpattern\interpreterpattern.pri ..\chainofresponsibilitypattern\chainofresponsibilitypattern.pri ..\mementopattern\mementopattern.pri D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resolve_config.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exclusive_builds_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\default_post.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\build_pass.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\console.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\win32\rtti.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\precompile_header.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\warn_on.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\qt.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\resources.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\moc.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\file_copies.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\testcase_targets.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\exceptions.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\yacc.prf D:\Qt5.7.1-64\5.7\msvc2015_64\mkspecs\features\lex.prf ..\DesignPatterns.pro D:\Qt5.7.1-64\5.7\msvc2015_64\lib\Qt5Core.prl NO_PCH_SOURCES RESOURCES HEADERS SOURCES OBJECTIVE_SOURCES YACCSOURCES YACCSOURCES LEXSOURCES + +clean: compiler_clean + -$(DEL_FILE) release\main.obj + -$(DEL_FILE) release\DesignPatterns.exp + +distclean: clean + -$(DEL_FILE) release\DesignPatterns.lib + -$(DEL_FILE) $(DESTDIR_TARGET) + -$(DEL_FILE) Makefile.Release + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +benchmark: first + +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: +compiler_moc_header_clean: +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + + + +####### Compile + +release\main.obj: ..\main.cpp ../mementopattern/originator.h \ + ../mementopattern/memento.h \ + ../mementopattern/caretaker.h + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/bin/release/DesignPatterns.exe b/bin/release/DesignPatterns.exe new file mode 100644 index 0000000000000000000000000000000000000000..b35bc8329da6a696175c5a83924c533ab06062d8 GIT binary patch literal 24064 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�q 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 Jm%PyH{{#JW&$a*n literal 0 HcmV?d00001 diff --git a/bridgepattern/bridgepattern.pri b/bridgepattern/bridgepattern.pri new file mode 100644 index 0000000..be78595 --- /dev/null +++ b/bridgepattern/bridgepattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/first_interface.h \ + $$PWD/second_interface.h diff --git a/bridgepattern/first_interface.h b/bridgepattern/first_interface.h new file mode 100644 index 0000000..3c502ee --- /dev/null +++ b/bridgepattern/first_interface.h @@ -0,0 +1,28 @@ +#include +using namespace std; + +class DrawApi +{ +public: + DrawApi(){} + virtual ~DrawApi(){} + virtual void drawCircle(int radius, int x, int y) = 0; +}; + +class RedCircle: public DrawApi +{ +public: + void drawCircle(int radius, int x, int y) + { + cout << "drawing circle [ color: red, radius: " << radius << ", x: " << x << ", y: " << y << " ]" << endl; + } +}; + +class GreenCircle: public DrawApi +{ +public: + void drawCircle(int radius, int x, int y) + { + cout << "drawing circle [ color: green, radius: " << radius << ", x: " << x << ", y: " << y << " ]" << endl; + } +}; diff --git a/bridgepattern/second_interface.h b/bridgepattern/second_interface.h new file mode 100644 index 0000000..a623782 --- /dev/null +++ b/bridgepattern/second_interface.h @@ -0,0 +1,36 @@ +#include "first_interface.h" + +class Shape +{ +public: + virtual ~Shape(){} + DrawApi *getDrawApi() + { + return this->drawApi; + } + virtual void draw() = 0; + +protected: + DrawApi *drawApi; + Shape(DrawApi *drawApi): drawApi(drawApi){} +}; + +class Circle: public Shape +{ +public: + Circle(int radius, int x, int y, DrawApi *drawApi): Shape(drawApi) + { + this->x = x; + this->y = y; + this->radius = radius; + } + void draw() + { + getDrawApi()->drawCircle(radius, x, y); + } + +private: + int x; + int y; + int radius; +}; diff --git a/builderpattern/builderpattern.pri b/builderpattern/builderpattern.pri new file mode 100644 index 0000000..58d21ee --- /dev/null +++ b/builderpattern/builderpattern.pri @@ -0,0 +1,5 @@ +HEADERS += \ + $$PWD/packinterface.h \ + $$PWD/foodinterface.h \ + $$PWD/meal.h \ + $$PWD/meakbuilder.h diff --git a/builderpattern/foodinterface.h b/builderpattern/foodinterface.h new file mode 100644 index 0000000..761a442 --- /dev/null +++ b/builderpattern/foodinterface.h @@ -0,0 +1,86 @@ +#include "packinterface.h" +#include + +class Food +{ +public: + Food(){} + virtual ~Food(){} + virtual Packing *getPack() = 0; + virtual string getName() = 0; + virtual float getPrice() = 0; +}; + +class Burger: public Food +{ +public: + Packing *getPack() + { + return new Wrapper(); + } + virtual string getName() = 0; + virtual float getPrice() = 0; +}; + +class ColdDrink: public Food +{ +public: + Packing *getPack() + { + return new Bottle(); + } + virtual string getName() = 0; + virtual float getPrice() = 0; +}; + +class VegBurger: public Burger +{ +public: + string getName() + { + return "Veg Burger"; + } + float getPrice() + { + return 25.0f; + } +}; + +class ChickenBurger: public Burger +{ +public: + string getName() + { + return "Chicken Burger"; + } + float getPrice() + { + return 50.5f; + } +}; + +class Coke: public ColdDrink +{ +public: + string getName() + { + return "Coke"; + } + float getPrice() + { + return 30.0f; + } +}; + +class Pepsi: public ColdDrink +{ +public: + string getName() + { + return "Pepsi"; + } + float getPrice() + { + return 35.0f; + } +}; diff --git a/builderpattern/meakbuilder.h b/builderpattern/meakbuilder.h new file mode 100644 index 0000000..a741a2b --- /dev/null +++ b/builderpattern/meakbuilder.h @@ -0,0 +1,20 @@ +#include "meal.h" + +class MealBuilder +{ +public: + Meal *prepareVegMeal () + { + Meal * meal = new Meal(); + meal->addFoodToVector(new VegBurger()); + meal->addFoodToVector(new Coke()); + return meal; + } + Meal *prepareNonVegMeal () + { + Meal * meal = new Meal(); + meal->addFoodToVector(new ChickenBurger()); + meal->addFoodToVector(static_cast(new Pepsi())); + return meal; + } +}; diff --git a/builderpattern/meal.h b/builderpattern/meal.h new file mode 100644 index 0000000..7b0aa8a --- /dev/null +++ b/builderpattern/meal.h @@ -0,0 +1,37 @@ +#include "foodinterface.h" +#include + +class Meal +{ +public: + Meal() + { + vec.reserve(255); + } + void addFoodToVector(Food * food) + { + vec.push_back(food); + } + float getCost() + { + float ret = 0.0; + for(auto &food: vec) + { + ret += food->getPrice(); + } + return ret; + } + void showFoods() + { + for(auto &food: vec) + { + cout << "--------------------------" << endl; + cout << food->getName() << endl; + cout << food->getPack()->pack() << endl; + cout << food->getPrice() << endl; + } + } + +public: + std::vector vec; +}; diff --git a/builderpattern/packinterface.h b/builderpattern/packinterface.h new file mode 100644 index 0000000..84bb296 --- /dev/null +++ b/builderpattern/packinterface.h @@ -0,0 +1,28 @@ +#include +using namespace std; + +class Packing +{ +public: + Packing(){} + virtual ~Packing(){} + virtual string pack() = 0; +}; + +class Wrapper: public Packing +{ +public: + string pack() + { + return "Wrapper"; + } +}; + +class Bottle: public Packing +{ +public: + string pack() + { + return "Bottle"; + } +}; diff --git a/chainofresponsibilitypattern/chainofresponsibilitypattern.pri b/chainofresponsibilitypattern/chainofresponsibilitypattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/chainofresponsibilitypattern/chainofresponsibilitypattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/chainofresponsibilitypattern/interface.h b/chainofresponsibilitypattern/interface.h new file mode 100644 index 0000000..ebf63c0 --- /dev/null +++ b/chainofresponsibilitypattern/interface.h @@ -0,0 +1,81 @@ +#include +#include +#include +using namespace std; + +class AbstractLogger +{ +public: + static const int INFO = 1; + static const int DEBUG = 2; + static const int ERROR = 3; + AbstractLogger() + { + nextLogger = nullptr; + } + virtual ~AbstractLogger(){} + void setNextLogger(AbstractLogger *next) + { + nextLogger = next; + } + void logMessage(int level, string message) + { + if(this->level <= level) + { + write(message); + } + else + { + assert(nextLogger != nullptr); + nextLogger->write(message); + } + } + virtual void write(string message) = 0; + +protected: + int level; + AbstractLogger *nextLogger; +}; + +class ConsoleLogger: public AbstractLogger +{ +public: + ConsoleLogger(int level) + { + this->level = level; + cout << "init ConsoleLogger" << endl; + } + void write(string message) + { + cout << "Standard Console::Logger: " + message << endl; + } + +}; + +class ErrorLogger: public AbstractLogger +{ +public: + ErrorLogger(int level) + { + this->level = level; + cout << "init ErrorLogger" << endl; + } + void write(string message) + { + cout << "Error Console::Logger: " + message << endl; + } +}; + +class FileLogger: public AbstractLogger +{ +public: + FileLogger(int level) + { + this->level = level; + cout << "init FileLogger" << endl; + } + void write(string message) + { + cout << "File::Logger: " + message << endl; + } +}; diff --git a/commandpattern/broker.h b/commandpattern/broker.h new file mode 100644 index 0000000..b19760e --- /dev/null +++ b/commandpattern/broker.h @@ -0,0 +1,22 @@ +#include +#include "interface.h" + +class Broker +{ +public: + void addOrder(Order *order) + { + vector.push_back(order); + } + void executeAllOrder() + { + for(auto it : vector) + { + it->execute(); + } + vector.clear(); + } + +private: + std::vector vector; +}; diff --git a/commandpattern/commandpattern.pri b/commandpattern/commandpattern.pri new file mode 100644 index 0000000..9334d90 --- /dev/null +++ b/commandpattern/commandpattern.pri @@ -0,0 +1,4 @@ +HEADERS += \ + $$PWD/stock.h \ + $$PWD/interface.h \ + $$PWD/broker.h diff --git a/commandpattern/interface.h b/commandpattern/interface.h new file mode 100644 index 0000000..d0a0fcc --- /dev/null +++ b/commandpattern/interface.h @@ -0,0 +1,34 @@ +#include "stock.h" + +class Order +{ +public: + Order(){} + virtual ~Order(){} + virtual void execute() = 0; +}; + +class BuyStock: public Order +{ +public: + BuyStock(Stock *stock) : stock(stock){} + void execute() + { + stock->buy(); + } +private: + Stock *stock; +}; + +class SellStock: public Order +{ +public: + SellStock(Stock *stock) : stock(stock){} + void execute() + { + stock->sell(); + } + +private: + Stock *stock; +}; diff --git a/commandpattern/stock.h b/commandpattern/stock.h new file mode 100644 index 0000000..099345e --- /dev/null +++ b/commandpattern/stock.h @@ -0,0 +1,20 @@ +#include +#include +using namespace std; + +class Stock +{ +public: + void buy() + { + cout << "Stock [ Name: " + name + ", Quantity: " + std::to_string(quantity) + " ] bought" << endl; + } + void sell() + { + cout << "Stock [ Name: " + name + ", Quantity: " + std::to_string(quantity) + " ] sold" << endl; + } + +private: + string name = "test"; + int quantity = 10; +}; diff --git a/compositepattern/compositepattern.pri b/compositepattern/compositepattern.pri new file mode 100644 index 0000000..51eaa5f --- /dev/null +++ b/compositepattern/compositepattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/employee.h diff --git a/compositepattern/employee.h b/compositepattern/employee.h new file mode 100644 index 0000000..c216ac3 --- /dev/null +++ b/compositepattern/employee.h @@ -0,0 +1,35 @@ +#include +#include +#include +using namespace std; + +class Employee +{ +public: + Employee(string name, string department, int salary) + { + this->name = name; + this->department = department; + this->salary = salary; + cout << "Employee name: " + name << ", department: " + department << ", salary: " << salary << endl; + } + void add(Employee *employee) + { + vector.push_back(employee); + } + std::vector getVector() + { + return this->vector; + } + string getDetails() + { + string ret = "Employee name: " + name + ", department: " + department + ", salary: " + std::to_string(salary); + return ret; + } + +private: + string name; + string department; + int salary; + std::vector vector; +}; diff --git a/decoratorpattern/decoratorpattern.pri b/decoratorpattern/decoratorpattern.pri new file mode 100644 index 0000000..be78595 --- /dev/null +++ b/decoratorpattern/decoratorpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/first_interface.h \ + $$PWD/second_interface.h diff --git a/decoratorpattern/first_interface.h b/decoratorpattern/first_interface.h new file mode 100644 index 0000000..154a990 --- /dev/null +++ b/decoratorpattern/first_interface.h @@ -0,0 +1,28 @@ +#include +using namespace std; + +class Shape +{ +public: + Shape(){} + virtual ~Shape(){} + virtual void draw() = 0; +}; + +class Rectangle: public Shape +{ +public: + void draw() + { + cout << "draw Rectangle" << endl; + } +}; + +class Circle: public Shape +{ +public: + void draw() + { + cout << "draw Circle" << endl; + } +}; diff --git a/decoratorpattern/second_interface.h b/decoratorpattern/second_interface.h new file mode 100644 index 0000000..4a9172c --- /dev/null +++ b/decoratorpattern/second_interface.h @@ -0,0 +1,33 @@ +#include "first_interface.h" + +class ShapeDecorator +{ +public: + ShapeDecorator(Shape *shape) + { + this->shape = shape; + } + virtual ~ShapeDecorator(){} + virtual void draw() + { + shape->draw(); + } + +protected: + Shape *shape; +}; + +class RedShapeDecorator: public ShapeDecorator +{ +public: + RedShapeDecorator(Shape *shape) : ShapeDecorator(shape){} + void setRedBorder() + { + cout << "Border color: Red" << endl; + } + void draw() + { + shape->draw(); + setRedBorder(); + } +}; diff --git a/facadepattern/facadepattern.pri b/facadepattern/facadepattern.pri new file mode 100644 index 0000000..0208e86 --- /dev/null +++ b/facadepattern/facadepattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/interface.h \ + $$PWD/shapemaker.h diff --git a/facadepattern/interface.h b/facadepattern/interface.h new file mode 100644 index 0000000..ae647a7 --- /dev/null +++ b/facadepattern/interface.h @@ -0,0 +1,37 @@ +#include +using namespace std; + +class Shape +{ +public: + Shape(){} + virtual ~Shape(){} + virtual void draw() = 0; +}; + +class Square: public Shape +{ +public: + void draw() + { + cout << "draw Square" << endl; + } +}; + +class Circle: public Shape +{ +public: + void draw() + { + cout << "draw Circle" << endl; + } +}; + +class Rectangle: public Shape +{ +public: + void draw() + { + cout << "draw Rectangle" << endl; + } +}; diff --git a/facadepattern/shapemaker.h b/facadepattern/shapemaker.h new file mode 100644 index 0000000..0ea90d8 --- /dev/null +++ b/facadepattern/shapemaker.h @@ -0,0 +1,29 @@ +#include "interface.h" + +class ShapeMaker +{ +public: + ShapeMaker() + { + this->circle = new Circle(); + this->square = new Square(); + this->rectangle = new Rectangle(); + } + void drawCircle() + { + circle->draw(); + } + void drawSquare() + { + square->draw(); + } + void drawRectangle() + { + rectangle->draw(); + } + +private: + Shape *circle; + Shape *square; + Shape *rectangle; +}; diff --git a/factorypattern/factorypattern.pri b/factorypattern/factorypattern.pri new file mode 100644 index 0000000..a946f12 --- /dev/null +++ b/factorypattern/factorypattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/interface.h \ + $$PWD/shapefactory.h diff --git a/factorypattern/interface.h b/factorypattern/interface.h new file mode 100644 index 0000000..640a32c --- /dev/null +++ b/factorypattern/interface.h @@ -0,0 +1,52 @@ +#include +using namespace std; + +class Shape +{ +public: + Shape() + { + cout << "create Shape" << endl; + } + virtual ~Shape(){} + virtual void draw() = 0; +}; + +class Circle : public Shape +{ +public: + Circle() + { + cout << "create Circle" << endl; + } + void draw() + { + cout << "draw Circle" << endl; + } +}; + +class Square: public Shape +{ +public: + Square() + { + cout << "create Square" << endl; + } + void draw() + { + cout << "draw Square" << endl; + } +}; + +class Rectangle: public Shape +{ +public: + Rectangle() + { + cout << "create Rectangle" << endl; + } + void draw() + { + cout << "draw Rectangle" << endl; + } +}; diff --git a/factorypattern/shapefactory.h b/factorypattern/shapefactory.h new file mode 100644 index 0000000..1df9022 --- /dev/null +++ b/factorypattern/shapefactory.h @@ -0,0 +1,26 @@ +#include "interface.h" + +class ShapeFactory +{ +public: + ShapeFactory(){} + Shape* getShape(string type) + { + if (type.compare("Circle") == 0) + { + return new Circle(); + } + else if (type.compare("Square") == 0) + { + return new Square(); + } + else if (type.compare("Rectangle") == 0) + { + return new Rectangle(); + } + else + { + return nullptr; + } + } +}; diff --git a/flyweightpattern/flyweightpattern.pri b/flyweightpattern/flyweightpattern.pri new file mode 100644 index 0000000..a946f12 --- /dev/null +++ b/flyweightpattern/flyweightpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/interface.h \ + $$PWD/shapefactory.h diff --git a/flyweightpattern/interface.h b/flyweightpattern/interface.h new file mode 100644 index 0000000..4d5a207 --- /dev/null +++ b/flyweightpattern/interface.h @@ -0,0 +1,42 @@ +#include +#include +using namespace std; + +class Shape +{ +public: + Shape(){} + virtual ~Shape(){} + virtual void draw() = 0; +}; + +class Circle : public Shape +{ +public: + Circle(string color) : color(color){} + void setX(int x) + { + this->x = x; + cout << "set x success" << endl; + } + void setY(int y) + { + this->y = y; + cout << "set y success" << endl; + } + void setRadius(int radius) + { + this->radius = radius; + cout << "set radius success" << endl; + } + void draw() + { + cout << "draw Circle [color: " + color + ", x: " + std::to_string(x) + ", y: " + std::to_string(y) + ", radius: " + std::to_string(radius) + "]" << endl << endl; + } + +private: + int x; + int y; + int radius; + string color; +}; diff --git a/flyweightpattern/shapefactory.h b/flyweightpattern/shapefactory.h new file mode 100644 index 0000000..9c4cc9d --- /dev/null +++ b/flyweightpattern/shapefactory.h @@ -0,0 +1,23 @@ +#include "interface.h" +#include + +class ShapeFactory +{ +public: + std::map map; + auto getCircle(string color)->Shape* + { + auto iter = map.find(color); + if (iter != map.end()) + { + return iter->second; + } + else + { + Shape *circle = new Circle(color); + map.insert(std::make_pair(color, circle)); + cout << "Creating circle of color : " + color << endl; + return circle; + } + } +}; diff --git a/interpreterpattern/interface.h b/interpreterpattern/interface.h new file mode 100644 index 0000000..790af5c --- /dev/null +++ b/interpreterpattern/interface.h @@ -0,0 +1,65 @@ +#include +#include +using namespace std; + +class Expression +{ +public: + Expression(){} + virtual ~Expression(){} + virtual bool interpret(string context) = 0; +}; + +class TerminalExpression: public Expression +{ +public: + TerminalExpression(string data) : data(data) + { + cout << "init TerminalExpression" << endl; + } + bool interpret(string context) + { + if(context.find(data) != string::npos) + { + return true; + } + return false; + } + +private: + string data; +}; + +class OrExpression: public Expression +{ +public: + OrExpression(Expression *exp1, Expression *exp2) : exp1(exp1), exp2(exp2) + { + cout << "init OrExpression" << endl; + } + bool interpret(string context) + { + return exp1->interpret(context) || exp2->interpret(context); + } + +private: + Expression *exp1 = nullptr; + Expression *exp2 = nullptr; +}; + +class AndExpression: public Expression +{ +public: + AndExpression(Expression *exp1, Expression *exp2) : exp1(exp1), exp2(exp2) + { + cout << "init AndExpression" << endl; + } + bool interpret(string context) + { + return exp1->interpret(context) && exp2->interpret(context); + } + +private: + Expression *exp1 = nullptr; + Expression *exp2 = nullptr; +}; diff --git a/interpreterpattern/interpreterpattern.pri b/interpreterpattern/interpreterpattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/interpreterpattern/interpreterpattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/iteratorpattern/interface.h b/iteratorpattern/interface.h new file mode 100644 index 0000000..2757852 --- /dev/null +++ b/iteratorpattern/interface.h @@ -0,0 +1,61 @@ +#include +#include +#include +using namespace std; + +class Iterator +{ +public: + Iterator(){} + virtual ~Iterator(){} + virtual bool hasNext() = 0; + virtual string next() = 0; +}; + +class NameIterator: public Iterator +{ +public: + NameIterator(size_t index, std::vector vector) : index(index), vector(vector){} + bool hasNext() + { + if(index < vector.size() - 1) + { + return true; + } + return false; + } + string next() + { + if(this->hasNext()) + { + return vector.at(index++); + } + return nullptr; + } + +private: + size_t index; + std::vector vector; +}; + +class Container +{ +public: + Container(){} + virtual ~Container(){} + virtual Iterator* getIterator() = 0; +}; + +class NameRepository: public Container +{ +public: + NameRepository(size_t index, std::vector vector) : index(index), vector(vector){} + Iterator* getIterator() + { + return new NameIterator(index, vector); + } + +private: + size_t index; + std::vector vector; +}; diff --git a/iteratorpattern/iteratorpattern.pri b/iteratorpattern/iteratorpattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/iteratorpattern/iteratorpattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..7f876d8 --- /dev/null +++ b/main.cpp @@ -0,0 +1,331 @@ +//#include "factorypattern/shapefactory.h" +//#include "proxypattern/interface.h" +//#include "templatepattern/interface.h" +//#include "strategypattern/context.h" +//#include "flyweightpattern/shapefactory.h" +//#include "visitorpattern/son.h" +//#include "mediatorpattern/usr.h" +//#include "observerpattern/subject.h" +//#include "statepattern/interface.h" +//#include "commandpattern/broker.h" +//#include "decoratorpattern/second_interface.h" +//#include "bridgepattern/second_interface.h" +//#include "iteratorpattern/interface.h" +//#include "compositepattern/employee.h" +//#include "facadepattern/shapemaker.h" +//#include "adapterpattern/second_interface.h" +//#include "abstractfactorypattern/factoryproducer.h" +//#include "builderpattern/meakbuilder.h" +//#include "prototypepattern/interface.h" +//#include "interpreterpattern/interface.h" +#include "chainofresponsibilitypattern/interface.h" +#include "mementopattern/originator.h" +#include "mementopattern/caretaker.h" + +int main() +{ + //工厂模式 + /* + ShapeFactory shapeFactory; + Circle *circle = static_cast(shapeFactory.getShape("Circle")); + circle->draw(); + cout << endl; + Square *square = static_cast(shapeFactory.getShape("Square")); + square->draw(); + cout << endl; + Rectangle *rectangle = static_cast(shapeFactory.getShape("Rectangle")); + rectangle->draw(); + */ + //代理模式 + /* + Image *image = new ProxyImage("maoye.jpg"); + image->display(); + */ + //模板模式 + /* + Game *game = new Cricket(); + game->play(); + cout << endl; + game = new Football(); + game->play(); + */ + //策略模式 + /* + Strategy *operationAdd = new OperationAdd(); + Strategy *operationSubstract = new OperationSubstract(); + Strategy *operationMultiply = new OperationMultiply(); + Context *context = new Context(operationAdd); + cout << "10 + 5 = " << context->executeStrategy(10, 5) << endl; + context = new Context(operationSubstract); + cout << "10 - 5 = " << context->executeStrategy(10, 5) << endl; + context = new Context(operationMultiply); + cout << "10 * 5 = " << context->executeStrategy(10, 5) << endl; + */ + //享元模式 + /* + ShapeFactory shapeFactory; + string array[] = { "Red", "Blue", "Red", "Yellow", "Blue" }; + for (auto color : array) + { + int x = rand() % 100; + int y = rand() % 100; + int radius = rand() % 100; + Circle *circle = static_cast(shapeFactory.getCircle(color)); + circle->setX(x); + circle->setY(y); + circle->setRadius(radius); + circle->draw(); + } + */ + //访问者模式 + /* + ComputerPartDisplayVisitor *cp = new ComputerPartDisplayVisitor(); + ComputerPart *computer = new Computer(); + ComputerPart *mouse = new Mouse(); + ComputerPart *keyboard = new Keyboard(); + ComputerPart *monitor = new Monitor(); + computer->accept(cp); + cout << endl; + mouse->accept(cp); + keyboard->accept(cp); + monitor->accept(cp); + */ + //中介者模式 + /* + User *user1 = new User("Billy"); + User *user2 = new User("Kitty"); + User *user3 = new User("Alice"); + cout << endl; + user1->showMessage("hello"); + user2->showMessage("world"); + user3->showMessage("!"); + */ + //观察者模式 + /* + Subject *subject = new Subject(10); + Observer *binaryObserver = new BinaryObserver(); + Observer *octalObserver = new OctalObserver(); + Observer *hexaObserver = new HexaObserver(); + subject->attach(binaryObserver); + subject->attach(octalObserver); + subject->attach(hexaObserver); + cout << subject->getState() << endl; + subject->setState(20); + cout << subject->getState() << endl; + */ + //状态模式 + /* + Context *context = new Context(); + State *startState = new StartState(); + startState->doAction(context); + cout << context->getState()->getString() << endl; + State *stopState = new StopState(); + stopState->doAction(context); + cout << context->getState()->getString() << endl; + */ + //命令模式 + /* + Stock *stock = new Stock(); + Order * buyStock = new BuyStock(stock); + Order * sellStock = new SellStock(stock); + Broker * broker = new Broker(); + broker->addOrder(buyStock); + broker->addOrder(sellStock); + broker->executeAllOrder(); + */ + //装饰模式 + /* + Shape *circle = new Circle(); + ShapeDecorator *redCircle = new RedShapeDecorator(new Circle()); + ShapeDecorator *redRectangle = new RedShapeDecorator(new Rectangle()); + circle->draw(); + cout << endl; + redCircle->draw(); + cout << endl; + redRectangle->draw(); + */ + //桥接模式 + /* + DrawApi *redDrawApi = new RedCircle(); + DrawApi *greenDrawApi = new GreenCircle(); + Shape *redCircle = new Circle(100, 10, 10, redDrawApi); + Shape *greenCircle = new Circle(100, 10, 10, greenDrawApi); + redCircle->draw(); + greenCircle->draw(); + */ + //迭代器模式 + /* + std::vector vector; + vector.push_back("Billy"); + vector.push_back("Alice"); + vector.push_back("Kitty"); + vector.push_back("Ben"); + vector.push_back("Jason"); + vector.push_back("Jack"); + vector.push_back("Miss"); + NameRepository *nameRepository = new NameRepository(0, vector); + for(Iterator *iterator = nameRepository->getIterator(); iterator->hasNext();) + { + cout << iterator->next() << endl; + } + */ + //组合模式 + /* + Employee *CEO = new Employee("Billy", "CEO", 50000); + Employee *vice_president = new Employee("Killy", "vice_president", 40000); + Employee *lead_engineer = new Employee("Ben", "lead_engineer", 40000); + Employee *marketing_manager1 = new Employee("Jason", "marketing_manager1", 30000); + Employee *marketing_manager2 = new Employee("Jon", "marketing_manager2", 30000); + Employee *artisan1 = new Employee("Alice", "artisan1", 10000); + Employee *artisan2 = new Employee("Sam", "artisan2", 10000); + CEO->add(vice_president); + CEO->add(lead_engineer); + vice_president->add(marketing_manager1); + vice_president->add(marketing_manager2); + lead_engineer->add(artisan1); + lead_engineer->add(artisan2); + cout << endl << "CEO: " << CEO->getDetails() << endl; + for (auto employee : CEO->getVector()) + { + cout << endl << "Leader: " << employee->getDetails() << endl; + cout << "Employee: " << endl; + for (auto e : employee->getVector()) + { + cout << e->getDetails() << endl; + } + } + */ + //外观模式 + /* + ShapeMaker shapeMaker; + shapeMaker.drawCircle(); + shapeMaker.drawSquare(); + shapeMaker.drawRectangle(); + */ + //适配器模式 + /* + AudioPlayer *audioPlayer = new AudioPlayer(); + audioPlayer->play("mp3", "beyond the horizon.mp3"); + audioPlayer->play("mp4", "alone.mp4"); + audioPlayer->play("vlc", "far far away.vlc"); + audioPlayer->play("avi", "mind me.avi"); + */ + //抽象工厂模式 + /* + FactoryProducer factoryProducer; + AbstractFactory * shapeFactory = factoryProducer.getFactory("ShapeFactory"); + AbstractFactory * colorFactory = factoryProducer.getFactory("ColorFactory"); + cout << endl; + Shape * circle = shapeFactory->getShape("Circle"); + circle->draw(); + cout << endl; + Shape * square = shapeFactory->getShape("Square"); + square->draw(); + cout << endl; + Shape * rectangle = shapeFactory->getShape("Rectangle"); + rectangle->draw(); + cout << endl; + Color * red = colorFactory->getColor("Red"); + red->fill(); + cout << endl; + Color * green = colorFactory->getColor("Green"); + green->fill(); + cout << endl; + Color * blue = colorFactory->getColor("Blue"); + blue->fill(); + */ + //建造者模式 + /* + MealBuilder * mealBuilder = new MealBuilder(); + Meal * vegMeal = mealBuilder->prepareVegMeal(); + cout << "Veg Meal" << endl; + vegMeal->showFoods(); + cout << "Total Cost: " << vegMeal->getCost() << endl; + Meal * nonVegMeal = mealBuilder->prepareNonVegMeal(); + cout << "\n\nNon-Veg Meal" << endl; + nonVegMeal->showFoods(); + cout << "Total Cost: " << nonVegMeal->getCost() << endl; + */ + //原型模式 + /* + Shape *circle1 = new Circle("circle"); + circle1->test(); + cout << endl; + Shape *circle2 = circle1->clone(); + circle2->test(); + cout << endl; + if (circle1 == circle2) + { + cout << "same" << endl; + } + else + { + cout << "different" << endl; + } + */ + //解析器模式 + /* + Expression *robert = new TerminalExpression("Robert"); + Expression *john = new TerminalExpression("John"); + Expression *isMale = new OrExpression(robert, john); + Expression *julie = new TerminalExpression("Julie"); + Expression *married = new TerminalExpression("Married"); + Expression *isMarriedWoman = new AndExpression(julie, married); + string ret1 = isMale->interpret("John") ? "true" : "false"; + string ret2 = isMarriedWoman->interpret("Married Julie") ? "true" : "false"; + cout << endl; + cout << "John is male? " + ret1 << endl; + cout << "Julie is a married women? " + ret2 << endl; + */ + //责任链模式 + + AbstractLogger *errorLogger = new ErrorLogger(AbstractLogger::ERROR); + AbstractLogger *fileLogger = new FileLogger(AbstractLogger::DEBUG); + AbstractLogger *consoleLogger = new ConsoleLogger(AbstractLogger::INFO); + cout << endl; + errorLogger->setNextLogger(fileLogger); + fileLogger->setNextLogger(consoleLogger); + errorLogger->logMessage(AbstractLogger::INFO, "This is an information"); + errorLogger->logMessage(AbstractLogger::DEBUG, "This is an debug level information"); + errorLogger->logMessage(AbstractLogger::ERROR, "This is an error information"); + cout << endl; + fileLogger->logMessage(AbstractLogger::INFO, "This is an information"); + fileLogger->logMessage(AbstractLogger::DEBUG, "This is an debug level information"); + fileLogger->logMessage(AbstractLogger::ERROR, "This is an error information"); + + //备忘录模式 + /* + Originator *originator = new Originator(); + Caretaker *caretaker = new Caretaker(); + originator->setState("state #1"); + caretaker->add(originator->saveStateToMemento()); + originator->setState("state #2"); + caretaker->add(originator->saveStateToMemento()); + originator->setState("state #3"); + caretaker->add(originator->saveStateToMemento()); + originator->setState("state #4"); + caretaker->add(originator->saveStateToMemento()); + originator->setState("state #5"); + caretaker->add(originator->saveStateToMemento()); + cout << endl; + for(size_t i = 0; i < caretaker->getVectorLength(); i++) + { + originator->getStateFromMemento(caretaker->getMemento(i)); + cout << "current state: " + originator->getState() << endl; + } + */ + return 0; +} + + + + + + + + + + + + + diff --git a/mediatorpattern/chatroom.h b/mediatorpattern/chatroom.h new file mode 100644 index 0000000..2207c19 --- /dev/null +++ b/mediatorpattern/chatroom.h @@ -0,0 +1,25 @@ +#include +#include +#include +using namespace std; + +class ChatRoom +{ +public: + void showMessage(string name, string message) + { + time_t setTime; + time(&setTime); + tm* ptm = localtime(&setTime); + std::string time = std::to_string(ptm->tm_year + 1900) + + "/" + + std::to_string(ptm->tm_mon + 1) + + "/" + + std::to_string(ptm->tm_mday) + + " " + + std::to_string(ptm->tm_hour) + ":" + + std::to_string(ptm->tm_min) + ":" + + std::to_string(ptm->tm_sec); + cout << time + " [ " + name + " ] : " + message << endl; + } +}; diff --git a/mediatorpattern/mediatorpattern.pri b/mediatorpattern/mediatorpattern.pri new file mode 100644 index 0000000..222f871 --- /dev/null +++ b/mediatorpattern/mediatorpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/chatroom.h \ + $$PWD/usr.h diff --git a/mediatorpattern/usr.h b/mediatorpattern/usr.h new file mode 100644 index 0000000..9ea12fe --- /dev/null +++ b/mediatorpattern/usr.h @@ -0,0 +1,26 @@ +#include "chatroom.h" + +class User +{ +public: + User(string name) : name(name) + { + cout << "init user " + name << endl; + } + string getName() + { + return this->name; + } + void setName(string name) + { + this->name = name; + } + void showMessage(string message) + { + ChatRoom chatRoom; + chatRoom.showMessage(this->name, message); + } + +private: + string name; +}; diff --git a/mementopattern/caretaker.h b/mementopattern/caretaker.h new file mode 100644 index 0000000..295d625 --- /dev/null +++ b/mementopattern/caretaker.h @@ -0,0 +1,22 @@ +#include "memento.h" +#include + +class Caretaker +{ +public: + void add(Memento *memento) + { + vector.push_back(memento); + } + Memento *getMemento(size_t index) + { + return vector.at(index); + } + size_t getVectorLength() + { + return vector.size(); + } + +private: + std::vector vector; +}; diff --git a/mementopattern/memento.h b/mementopattern/memento.h new file mode 100644 index 0000000..88be32c --- /dev/null +++ b/mementopattern/memento.h @@ -0,0 +1,20 @@ +#pragma once +#include +#include +using namespace std; + +class Memento +{ +public: + Memento(string state) : state(state) + { + cout << "init Memento " + state << endl; + } + string getState() + { + return this->state; + } + +private: + string state; +}; diff --git a/mementopattern/mementopattern.pri b/mementopattern/mementopattern.pri new file mode 100644 index 0000000..1cb6f35 --- /dev/null +++ b/mementopattern/mementopattern.pri @@ -0,0 +1,4 @@ +HEADERS += \ + $$PWD/memento.h \ + $$PWD/originator.h \ + $$PWD/caretaker.h diff --git a/mementopattern/originator.h b/mementopattern/originator.h new file mode 100644 index 0000000..826a9a0 --- /dev/null +++ b/mementopattern/originator.h @@ -0,0 +1,25 @@ +#include "memento.h" + +class Originator +{ +public: + void setState(string state) + { + this->state = state; + } + string getState() + { + return this->state; + } + Memento *saveStateToMemento() + { + return new Memento(this->state); + } + void getStateFromMemento(Memento *memento) + { + this->state = memento->getState(); + } + +private: + string state; +}; diff --git a/observerpattern/interface.h b/observerpattern/interface.h new file mode 100644 index 0000000..6a7f425 --- /dev/null +++ b/observerpattern/interface.h @@ -0,0 +1,37 @@ +#include +using namespace std; + +class Observer +{ +public: + Observer(){} + virtual ~Observer(){} + virtual void update() = 0; +}; + +class BinaryObserver: public Observer +{ +public: + void update() + { + cout << "BinaryObserver update" << endl; + } +}; + +class OctalObserver: public Observer +{ +public: + void update() + { + cout << "OctalObserver update" << endl; + } +}; + +class HexaObserver: public Observer +{ +public: + void update() + { + cout << "HexaObserver update" << endl; + } +}; diff --git a/observerpattern/observerpattern.pri b/observerpattern/observerpattern.pri new file mode 100644 index 0000000..f3faecd --- /dev/null +++ b/observerpattern/observerpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/interface.h \ + $$PWD/subject.h diff --git a/observerpattern/subject.h b/observerpattern/subject.h new file mode 100644 index 0000000..184bf56 --- /dev/null +++ b/observerpattern/subject.h @@ -0,0 +1,37 @@ +#include +#include "interface.h" + +class Subject +{ +public: + Subject(size_t state) : state(state) {} + size_t getState() + { + return this->state; + } + void setState(size_t state) + { + this->state = state; + notifyAllObservers(); + } + void attach(Observer *observer) + { + vector.push_back(observer); + } + void notifyAllObservers() + { + for(auto itor : vector) + { + itor->update(); + } + } + +private: + std::vector vector; + size_t state; +}; + + + + + diff --git a/prototypepattern/interface.h b/prototypepattern/interface.h new file mode 100644 index 0000000..0bc4bc5 --- /dev/null +++ b/prototypepattern/interface.h @@ -0,0 +1,40 @@ +#include +#include +using namespace std; + +class Shape +{ +public: + Shape() + { + cout << "create Shape" << endl; + } + virtual ~Shape(){} + virtual Shape *clone() = 0; + virtual void test() = 0; +}; + +class Circle: public Shape +{ +public: + Circle(string type) : type(type) + { + cout << "create Circle" << endl; + } + ~Circle(){} + Circle(const Circle& circle) + { + this->type = circle.type; + } + Shape *clone() + { + return new Circle(*this); + } + void test() + { + cout << "type: " << type << endl; + } + +private: + string type; +}; diff --git a/prototypepattern/prototypepattern.pri b/prototypepattern/prototypepattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/prototypepattern/prototypepattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/proxypattern/interface.h b/proxypattern/interface.h new file mode 100644 index 0000000..59c23f3 --- /dev/null +++ b/proxypattern/interface.h @@ -0,0 +1,52 @@ +#include +#include +using namespace std; + +class Image +{ +public: + Image(){} + virtual ~Image(){} + virtual void display() = 0; +}; + +class RealImage : public Image +{ +public: + RealImage(string fileName) : fileName(fileName) + { + loadFromDisk(fileName); + } + void loadFromDisk(string fileName) + { + cout << "Loading " + fileName << endl; + } + void display() + { + cout << "Displaying " + fileName << endl; + } + +private: + string fileName; +}; + +class ProxyImage : public Image +{ +public: + ProxyImage(string fileName) : fileName(fileName) + { + realImage = nullptr; + } + void display() + { + if (realImage == nullptr) + { + realImage = new RealImage(fileName); + } + realImage->display(); + } + +private: + RealImage *realImage; + string fileName; +}; diff --git a/proxypattern/proxypattern.pri b/proxypattern/proxypattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/proxypattern/proxypattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/singletonpattern/singletonpattern.h b/singletonpattern/singletonpattern.h new file mode 100644 index 0000000..2759094 --- /dev/null +++ b/singletonpattern/singletonpattern.h @@ -0,0 +1,83 @@ +#include +#include +using namespace std; + +//懒汉式 +/* +class SingleObject +{ +private: + SingleObject() + { + cout << "create SingleObject" << endl; + } + static SingleObject *instance; + +public: + static SingleObject *getInstance() + { + if (instance == nullptr) + { + instance = new SingleObject(); + } + return instance; + } +}; +SingleObject *SingleObject::instance = nullptr; +*/ + +//饿汉式 +/* +class SingleObject +{ +private: + SingleObject() + { + cout << "create SingleObject" << endl; + } + +public: + static SingleObject *getInstance() + { + static SingleObject instance; + return &instance; + } +} +*/ + +//多线程加锁 +class SingleObject +{ +private: + SingleObject() + { + cout << "create SingleObject" << endl; + } + static SingleObject *instance; + static mutex *my_mutext; + +public: + static SingleObject *getInstance() + { + if(instance == nullptr) + { + my_mutext->lock(); + instance = new SingleObject(); + my_mutext->unlock(); + } + return instance; + } + void test() + { + cout << "hello world" << endl; + } +}; + +SingleObject *SingleObject::instance = nullptr; +mutex *SingleObject::my_mutext = new mutex(); + + + + + + diff --git a/singletonpattern/singletonpattern.pri b/singletonpattern/singletonpattern.pri new file mode 100644 index 0000000..1323912 --- /dev/null +++ b/singletonpattern/singletonpattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/singletonpattern.h diff --git a/statepattern/context.h b/statepattern/context.h new file mode 100644 index 0000000..c4030cc --- /dev/null +++ b/statepattern/context.h @@ -0,0 +1,21 @@ +class State; + +class Context +{ +public: + Context() + { + state = nullptr; + } + void setState(State *state) + { + this->state = state; + } + State*getState() + { + return this->state; + } + +private: + State *state; +}; diff --git a/statepattern/interface.h b/statepattern/interface.h new file mode 100644 index 0000000..cd1d3b8 --- /dev/null +++ b/statepattern/interface.h @@ -0,0 +1,41 @@ +#include "context.h" +#include +#include +using namespace std; + +class State +{ +public: + State(){} + virtual ~State(){} + virtual void doAction(Context *context) = 0; + virtual string getString() = 0; +}; + +class StartState: public State +{ +public: + void doAction(Context *context) + { + cout << "Player is in start state" << endl; + context->setState(this); + } + string getString() + { + return "Start State"; + } +}; + +class StopState: public State +{ +public: + void doAction(Context *context) + { + cout << "Player is in stop state" << endl; + context->setState(this); + } + string getString() + { + return "Stop State"; + } +}; diff --git a/statepattern/statepattern.pri b/statepattern/statepattern.pri new file mode 100644 index 0000000..794eaff --- /dev/null +++ b/statepattern/statepattern.pri @@ -0,0 +1,6 @@ +HEADERS += \ + $$PWD/memento.h \ + $$PWD/originator.h \ + $$PWD/caretaker.h \ + $$PWD/context.h \ + $$PWD/interface.h diff --git a/strategypattern/context.h b/strategypattern/context.h new file mode 100644 index 0000000..4476332 --- /dev/null +++ b/strategypattern/context.h @@ -0,0 +1,14 @@ +#include "interface.h" + +class Context +{ +public: + Context(Strategy *strategy) : strategy(strategy){} + int executeStrategy(int num1, int num2) + { + return strategy->doOperation(num1, num2); + } + +private: + Strategy *strategy; +}; diff --git a/strategypattern/interface.h b/strategypattern/interface.h new file mode 100644 index 0000000..5bb7d9b --- /dev/null +++ b/strategypattern/interface.h @@ -0,0 +1,34 @@ +class Strategy +{ +public: + Strategy(){} + virtual ~Strategy(){} + virtual int doOperation(int num1, int num2) = 0; +}; + +class OperationAdd : public Strategy +{ +public: + int doOperation(int num1, int num2) + { + return num1 + num2; + } +}; + +class OperationSubstract: public Strategy +{ +public: + int doOperation(int num1, int num2) + { + return num1 - num2; + } +}; + +class OperationMultiply: public Strategy +{ +public: + int doOperation(int num1, int num2) + { + return num1 * num2; + } +}; diff --git a/strategypattern/strategypattern.pri b/strategypattern/strategypattern.pri new file mode 100644 index 0000000..e69de29 diff --git a/templatepattern/interface.h b/templatepattern/interface.h new file mode 100644 index 0000000..8c273c2 --- /dev/null +++ b/templatepattern/interface.h @@ -0,0 +1,52 @@ +#include +using namespace std; + +class Game +{ +public: + Game(){} + virtual ~Game(){} + virtual void initialize() = 0; + virtual void startPlay() = 0; + virtual void endPlay() = 0; + virtual void play() final + { + initialize(); + startPlay(); + endPlay(); + } +}; + +class Cricket : public Game +{ +public: + void initialize() + { + cout << "Cricket Game Initialized Start playing" << endl; + } + void startPlay() + { + cout << "Cricket Game Started Enjoy the game" << endl; + } + void endPlay() + { + cout << "Cricket Game Finished" << endl; + } +}; + +class Football : public Game +{ +public: + void initialize() + { + cout << "Football Game Initialized Start playing" << endl; + } + void startPlay() + { + cout << "Football Game Started Enjoy the game" << endl; + } + void endPlay() + { + cout << "Football Game Finished" << endl; + } +}; diff --git a/templatepattern/templatepattern.pri b/templatepattern/templatepattern.pri new file mode 100644 index 0000000..42a791a --- /dev/null +++ b/templatepattern/templatepattern.pri @@ -0,0 +1,2 @@ +HEADERS += \ + $$PWD/interface.h diff --git a/visitorpattern/father.h b/visitorpattern/father.h new file mode 100644 index 0000000..c81f150 --- /dev/null +++ b/visitorpattern/father.h @@ -0,0 +1,26 @@ +#include +using namespace std; +class Computer; +class Mouse; +class Keyboard; +class Monitor; + +class ComputerPartVisitor +{ +public: + ComputerPartVisitor(){} + virtual ~ComputerPartVisitor(){} + virtual void visit(Computer*computer) = 0; + virtual void visit(Mouse *mouse) = 0; + virtual void visit(Keyboard *keyboard) = 0; + virtual void visit(Monitor *monitor) = 0; +}; + +class ComputerPart +{ +public: + ComputerPart(){} + virtual ~ComputerPart(){} + virtual void accept(ComputerPartVisitor *computerPartVisitor) = 0; + virtual string getString() = 0; +}; diff --git a/visitorpattern/son.h b/visitorpattern/son.h new file mode 100644 index 0000000..292de85 --- /dev/null +++ b/visitorpattern/son.h @@ -0,0 +1,92 @@ +#include "father.h" +#include +#include + +class Keyboard : public ComputerPart +{ +public: + void accept(ComputerPartVisitor *computerPartVisitor) + { + computerPartVisitor->visit(this); + } + string getString() + { + return "Displaying Keyboard"; + } +}; + +class Monitor: public ComputerPart +{ +public: + void accept(ComputerPartVisitor *computerPartVisitor) + { + computerPartVisitor->visit(this); + } + string getString() + { + return "Displaying Monitor"; + } +}; + +class Mouse: public ComputerPart +{ +public: + void accept(ComputerPartVisitor *computerPartVisitor) + { + computerPartVisitor->visit(this); + } + string getString() + { + return "Displaying Mouse"; + } +}; + +class Computer: public ComputerPart +{ +public: + Computer() + { + ComputerPart *keyboard = new Keyboard(); + ComputerPart *monitor = new Monitor(); + ComputerPart *mouse = new Mouse(); + vector.push_back(keyboard); + vector.push_back(monitor); + vector.push_back(mouse); + } + void accept(ComputerPartVisitor *computerPartVisitor) + { + for(size_t i = 0; i < vector.size(); i++) + { + vector.at(i)->accept(computerPartVisitor); + } + computerPartVisitor->visit(this); + } + string getString() + { + return "Displaying Computer"; + } + +private: + std::vector vector; +}; + +class ComputerPartDisplayVisitor: public ComputerPartVisitor +{ +public: + void visit(Computer *computer) + { + cout << computer->getString() << endl; + } + void visit(Mouse *mouse) + { + cout << mouse->getString() << endl; + } + void visit(Keyboard *keyboard) + { + cout << keyboard->getString() << endl; + } + void visit(Monitor *monitor) + { + cout << monitor->getString() << endl; + } +}; diff --git a/visitorpattern/visitorpattern.pri b/visitorpattern/visitorpattern.pri new file mode 100644 index 0000000..9800000 --- /dev/null +++ b/visitorpattern/visitorpattern.pri @@ -0,0 +1,3 @@ +HEADERS += \ + $$PWD/father.h \ + $$PWD/son.h