initial
This commit is contained in:
parent
858f7203b4
commit
986eea7a92
|
@ -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)#备忘录模式
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,318 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 4.2.1, 2024-02-06T17:09:19. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{f6048ee0-a648-46d2-9ec4-234de25ff265}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="int">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">System</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap"/>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.8.0 MSVC2013 32bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.8.0 MSVC2013 32bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.58.win32_msvc2013_kit</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Debug</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Release</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/liubo/Desktop/VSCode Projects/build-DesignPatterns-Desktop_Qt_5_8_0_MSVC2013_32bit-Profile</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||||
|
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||||
|
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||||
|
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||||
|
<value type="int">0</value>
|
||||||
|
<value type="int">1</value>
|
||||||
|
<value type="int">2</value>
|
||||||
|
<value type="int">3</value>
|
||||||
|
<value type="int">4</value>
|
||||||
|
<value type="int">5</value>
|
||||||
|
<value type="int">6</value>
|
||||||
|
<value type="int">7</value>
|
||||||
|
<value type="int">8</value>
|
||||||
|
<value type="int">9</value>
|
||||||
|
<value type="int">10</value>
|
||||||
|
<value type="int">11</value>
|
||||||
|
<value type="int">12</value>
|
||||||
|
<value type="int">13</value>
|
||||||
|
<value type="int">14</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">-1</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">DesignPatterns</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/liubo/Desktop/VSCode Projects/DesignPatterns/DesignPatterns.pro</value>
|
||||||
|
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">DesignPatterns.pro</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
|
@ -0,0 +1,78 @@
|
||||||
|
#include "interface.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/abstractfactory.h \
|
||||||
|
$$PWD/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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,103 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/first_interface.h \
|
||||||
|
$$PWD/second_interface.h
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -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
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/first_interface.h \
|
||||||
|
$$PWD/second_interface.h
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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;
|
||||||
|
};
|
|
@ -0,0 +1,5 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/packinterface.h \
|
||||||
|
$$PWD/foodinterface.h \
|
||||||
|
$$PWD/meal.h \
|
||||||
|
$$PWD/meakbuilder.h
|
|
@ -0,0 +1,86 @@
|
||||||
|
#include "packinterface.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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<ColdDrink *>(new Pepsi()));
|
||||||
|
return meal;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include "foodinterface.h"
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
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<Food *> vec;
|
||||||
|
};
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include <iostream>
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -0,0 +1,81 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <assert.h>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,22 @@
|
||||||
|
#include <vector>
|
||||||
|
#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<Order *> vector;
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/stock.h \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/broker.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;
|
||||||
|
};
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/employee.h
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
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<Employee*> 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<Employee *> vector;
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/first_interface.h \
|
||||||
|
$$PWD/second_interface.h
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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();
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/shapemaker.h
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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;
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/shapefactory.h
|
|
@ -0,0 +1,52 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/shapefactory.h
|
|
@ -0,0 +1,42 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "interface.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
class ShapeFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
std::map<string, Shape*> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,65 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -0,0 +1,61 @@
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
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<string> 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<string> vector;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Container
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Container(){}
|
||||||
|
virtual ~Container(){}
|
||||||
|
virtual Iterator* getIterator() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class NameRepository: public Container
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NameRepository(size_t index, std::vector<string> vector) : index(index), vector(vector){}
|
||||||
|
Iterator* getIterator()
|
||||||
|
{
|
||||||
|
return new NameIterator(index, vector);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
size_t index;
|
||||||
|
std::vector<string> vector;
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -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<Circle*>(shapeFactory.getShape("Circle"));
|
||||||
|
circle->draw();
|
||||||
|
cout << endl;
|
||||||
|
Square *square = static_cast<Square*>(shapeFactory.getShape("Square"));
|
||||||
|
square->draw();
|
||||||
|
cout << endl;
|
||||||
|
Rectangle *rectangle = static_cast<Rectangle*>(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<Circle*>(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<string> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
#include <string>
|
||||||
|
#include <ctime>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/chatroom.h \
|
||||||
|
$$PWD/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;
|
||||||
|
};
|
|
@ -0,0 +1,22 @@
|
||||||
|
#include "memento.h"
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
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<Memento *> vector;
|
||||||
|
};
|
|
@ -0,0 +1,20 @@
|
||||||
|
#pragma once
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
class Memento
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Memento(string state) : state(state)
|
||||||
|
{
|
||||||
|
cout << "init Memento " + state << endl;
|
||||||
|
}
|
||||||
|
string getState()
|
||||||
|
{
|
||||||
|
return this->state;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
string state;
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/memento.h \
|
||||||
|
$$PWD/originator.h \
|
||||||
|
$$PWD/caretaker.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;
|
||||||
|
};
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h \
|
||||||
|
$$PWD/subject.h
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <vector>
|
||||||
|
#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<Observer*> vector;
|
||||||
|
size_t state;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -0,0 +1,52 @@
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -0,0 +1,83 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <mutex>
|
||||||
|
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();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/singletonpattern.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;
|
||||||
|
};
|
|
@ -0,0 +1,41 @@
|
||||||
|
#include "context.h"
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,6 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/memento.h \
|
||||||
|
$$PWD/originator.h \
|
||||||
|
$$PWD/caretaker.h \
|
||||||
|
$$PWD/context.h \
|
||||||
|
$$PWD/interface.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;
|
||||||
|
};
|
|
@ -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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,52 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/interface.h
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include <iostream>
|
||||||
|
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;
|
||||||
|
};
|
|
@ -0,0 +1,92 @@
|
||||||
|
#include "father.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
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<ComputerPart *> 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;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/father.h \
|
||||||
|
$$PWD/son.h
|
Loading…
Reference in New Issue