├── cppplaydesignpatterns
├── composite1.cpp
├── Debug
│ ├── vc120.idb
│ ├── vc120.pdb
│ ├── adapter.obj
│ ├── adapter1.obj
│ ├── bridge.obj
│ ├── builder.obj
│ ├── command1.obj
│ ├── facade.obj
│ ├── iterator.obj
│ ├── mediator.obj
│ ├── memento.obj
│ ├── observer.obj
│ ├── state1.obj
│ ├── state2.obj
│ ├── template.obj
│ ├── visitor.obj
│ ├── composite.obj
│ ├── composite1.obj
│ ├── cor_broker.obj
│ ├── decorator.obj
│ ├── decorator1.obj
│ ├── flyweight.obj
│ ├── prototype.obj
│ ├── singleton.obj
│ ├── cor_pointer.obj
│ ├── factorymethod.obj
│ ├── interpreter.obj
│ ├── observerboost.obj
│ ├── virtualproxy.obj
│ ├── abstractfactory.obj
│ ├── strategy_dynamic.obj
│ ├── chainofresponsibility.obj
│ ├── cppplayd.608DE9D9.tlog
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── link.read.1.tlog
│ │ ├── cl.command.1.tlog
│ │ ├── link.command.1.tlog
│ │ ├── link.write.1.tlog
│ │ └── cppplaydesignpatterns.lastbuildstate
│ ├── cppplaydesignpatterns.log
│ └── cppplaydesignpatterns.Build.CppClean.log
├── cppplaydesignpatterns.vcxproj.user
├── hottechnology.h
├── abstractfactory.cpp
├── adapter.cpp
├── template.cpp
├── factorymethod.cpp
├── observerboost.cpp
├── headers.h
├── singleton.cpp
├── decorator1.cpp
├── command1.cpp
├── composite.cpp
├── state2.cpp
├── adapter1.cpp
├── flyweight.cpp
├── prototype.cpp
├── builder.cpp
├── iterator.cpp
├── memento.cpp
├── bridge.cpp
├── decorator.cpp
├── chainofresponsibility.cpp
├── visitor.cpp
├── virtualproxy.cpp
├── cor_pointer.cpp
├── cor_broker.cpp
├── strategy_dynamic.cpp
├── state1.cpp
├── observer.cpp
├── mediator.cpp
├── facade.cpp
├── interpreter.cpp
├── cppplaydesignpatterns.vcxproj.filters
└── cppplaydesignpatterns.vcxproj
├── cppplaydesignpatterns.v12.suo
├── Debug
├── cppplaydesignpatterns.exe
├── cppplaydesignpatterns.ilk
└── cppplaydesignpatterns.pdb
├── cppplaydesignpatterns.sln
└── README.md
/cppplaydesignpatterns/composite1.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 | using namespace std;
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cppplaydesignpatterns.v12.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns.v12.suo
--------------------------------------------------------------------------------
/Debug/cppplaydesignpatterns.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/Debug/cppplaydesignpatterns.exe
--------------------------------------------------------------------------------
/Debug/cppplaydesignpatterns.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/Debug/cppplaydesignpatterns.ilk
--------------------------------------------------------------------------------
/Debug/cppplaydesignpatterns.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/Debug/cppplaydesignpatterns.pdb
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/vc120.idb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/vc120.idb
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/vc120.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/vc120.pdb
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/adapter.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/adapter.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/adapter1.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/adapter1.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/bridge.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/bridge.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/builder.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/builder.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/command1.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/command1.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/facade.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/facade.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/iterator.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/iterator.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/mediator.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/mediator.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/memento.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/memento.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/observer.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/observer.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/state1.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/state1.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/state2.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/state2.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/template.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/template.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/visitor.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/visitor.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/composite.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/composite.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/composite1.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/composite1.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cor_broker.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cor_broker.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/decorator.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/decorator.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/decorator1.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/decorator1.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/flyweight.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/flyweight.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/prototype.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/prototype.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/singleton.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/singleton.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cor_pointer.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cor_pointer.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/factorymethod.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/factorymethod.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/interpreter.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/interpreter.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/observerboost.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/observerboost.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/virtualproxy.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/virtualproxy.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/abstractfactory.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/abstractfactory.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/strategy_dynamic.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/strategy_dynamic.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/chainofresponsibility.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/chainofresponsibility.obj
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/CL.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/CL.read.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/CL.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/CL.write.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.read.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/cl.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/cl.command.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.command.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NilsHolger/cppplaydesignpatterns/HEAD/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/link.write.1.tlog
--------------------------------------------------------------------------------
/cppplaydesignpatterns/cppplaydesignpatterns.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 |
--------------------------------------------------------------------------------
/cppplaydesignpatterns/Debug/cppplayd.608DE9D9.tlog/cppplaydesignpatterns.lastbuildstate:
--------------------------------------------------------------------------------
1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit
2 | Debug|Win32|C:\Users\Nils\Documents\Visual Studio 2013\Projects\cppplaydesignpatterns\|
3 |
--------------------------------------------------------------------------------
/cppplaydesignpatterns/hottechnology.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "headers.h"
3 | using namespace std;
4 |
5 | struct HT
6 | {
7 | virtual void b(int e) = 0;
8 | };
9 |
10 | struct A : HT
11 | {
12 | void b(int e)
13 | {
14 | cout << "a -> d -> i " << e << '\n';
15 | }
16 | };
17 |
18 | struct X : HT
19 | {
20 | void b(int e)
21 | {
22 | cout << "c -> mc -> a " << e << '\n';
23 | }
24 | };
25 |
26 |
27 |
--------------------------------------------------------------------------------
/cppplaydesignpatterns/abstractfactory.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 | #include "hottechnology.h"
3 |
4 | using namespace std;
5 | unique_ptr make_t(string t)
6 | {
7 | unique_ptr ht;
8 | if (t == "a")
9 | {
10 | ht = make_unique();
11 | ht->b(100);
12 | }
13 | else
14 | {
15 | ht = make_unique();
16 | ht->b(10);
17 | }
18 | return ht;
19 | }
20 | //auto main() -> int
21 | //{
22 | // auto a = make_t("a");
23 | // getchar();
24 | //}
--------------------------------------------------------------------------------
/cppplaydesignpatterns/adapter.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 | using namespace std;
3 |
4 | class String {
5 | string s;
6 | public:
7 | String(const string &s) : s(s){}
8 | String to_lower_copy()const {
9 | return boost::to_lower_copy(s);
10 | }
11 | vector split(const string& delimeter = " ")const {
12 | vector parts;
13 | boost::split(parts, s, boost::is_any_of(delimeter), boost::token_compress_on);
14 | return vector(parts.begin(), parts.end());
15 | }
16 | size_t get_length() const { return s.length(); };
17 | };
18 |
19 | //int main(){
20 | //
21 | // String s{ "You Sexy String" };
22 | // for (auto& t : s.to_lower_copy().split()){ cout << t.get_length() << '\n'; };
23 | //
24 | //}
--------------------------------------------------------------------------------
/cppplaydesignpatterns/template.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 | using namespace std;
3 |
4 | class Base
5 | {
6 | void a(){
7 | cout << "a ";
8 | }
9 | void c(){
10 | cout << "c ";
11 | }
12 | void e(){
13 | cout << "e ";
14 | }
15 | virtual void ph1() = 0;
16 | virtual void ph2() = 0;
17 | public:
18 | void execute(){
19 | a();
20 | ph1();
21 | c();
22 | ph2();
23 | e();
24 | }
25 | };
26 |
27 | class One : public Base
28 | {
29 | void ph1(){
30 | cout << "b ";
31 | }
32 | void ph2(){
33 | cout << "d ";
34 | }
35 | };
36 | class Two : public Base
37 | {
38 | void ph1(){
39 | cout << "2 ";
40 | }
41 | void ph2(){
42 | cout << "4 ";
43 | }
44 | };
45 |
46 |
47 | //auto main() -> int
48 | //{
49 | // Base *array[] =
50 | // {
51 | // &One(), &Two()
52 | // };
53 | // for (int i = 0; i < 2; i++){
54 | // array[i]->execute();
55 | // cout << '\n';
56 | // }
57 | //}
--------------------------------------------------------------------------------
/cppplaydesignpatterns/factorymethod.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 |
3 | using namespace std;
4 |
5 | const double PI4 = 3.14159265359 / 4;
6 |
7 | class Point
8 | {
9 | Point(const float x, const float y) : x{ x }, y{ y } {}
10 | public:
11 | float x, y;
12 | friend std::ostream& operator<<(std::ostream& os, const Point& obj)
13 | {
14 | return os << "x: " << obj.x << " y: " << obj.y << '\n';
15 | }
16 | friend class PointFactory;
17 | };
18 |
19 | class PointFactory
20 | {
21 | public:
22 | static Point NewCartesian(const float x, const float y)
23 | {
24 | return{ x, y };
25 | }
26 |
27 | static Point NewPolar(const float r, const float theta)
28 | {
29 | return{ r * cos(theta), r * sin(theta) };
30 | }
31 | };
32 |
33 |
34 | //auto main() -> int
35 | //{
36 | // auto c = PointFactory::NewCartesian(0, 1);
37 | // auto p = PointFactory::NewPolar(1, PI4);
38 | // cout << c << '\n';
39 | // cout << p << '\n';
40 | // getchar();
41 | //}
--------------------------------------------------------------------------------
/cppplaydesignpatterns/observerboost.cpp:
--------------------------------------------------------------------------------
1 | #include "headers.h"
2 |
3 | using namespace std;
4 | using namespace boost;
5 |
6 | template
7 | struct INotifyPropertyChanged
8 | {
9 | virtual ~INotifyPropertyChanged() = default;
10 | signals2::signal PropertyChanged;
11 | };
12 |
13 | struct SexyLady : INotifyPropertyChanged
14 | {
15 | explicit SexyLady(const int shoesize) : shoesize(shoesize)
16 | {
17 | }
18 | virtual int GetShoeSize()
19 | {
20 | return shoesize;
21 | }
22 |
23 | virtual void SetShoeSize(const int shoesize)
24 | {
25 | if (this->shoesize == shoesize){ return; }
26 | this->shoesize = shoesize;
27 | PropertyChanged(*this, "shoesize");
28 | }
29 | private:
30 | int shoesize;
31 | };
32 |
33 | //auto main() -> int
34 | //{
35 | // SexyLady S{ 37 };
36 | // S.PropertyChanged.connect([](SexyLady&, const string& property_name)
37 | // {
38 | // cout << property_name << " has changed " << '\n';
39 | // });
40 | // S.SetShoeSize(38);
41 | //}
42 |
43 |
44 |
--------------------------------------------------------------------------------
/cppplaydesignpatterns/headers.h:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include