From 8071fabb51e5d63dd017cafbb8dc0a96e113e066 Mon Sep 17 00:00:00 2001 From: FengJungle Date: Sun, 27 Feb 2022 11:50:35 +0800 Subject: [PATCH] feature: add lowering coupling discussions and methods. --- 32.谈谈低耦合原则/.vscode/settings.json | 5 +++ 32.谈谈低耦合原则/01.Picture/Right.jpg | Bin 0 -> 22597 bytes 32.谈谈低耦合原则/01.Picture/Wrong.png | Bin 0 -> 17916 bytes 32.谈谈低耦合原则/02.Code/rightcode.cpp | 41 ++++++++++++++++++++++++ 32.谈谈低耦合原则/02.Code/wrongcode.cpp | 34 ++++++++++++++++++++ README.md | 5 +++ 6 files changed, 85 insertions(+) create mode 100644 32.谈谈低耦合原则/.vscode/settings.json create mode 100644 32.谈谈低耦合原则/01.Picture/Right.jpg create mode 100644 32.谈谈低耦合原则/01.Picture/Wrong.png create mode 100644 32.谈谈低耦合原则/02.Code/rightcode.cpp create mode 100644 32.谈谈低耦合原则/02.Code/wrongcode.cpp diff --git a/32.谈谈低耦合原则/.vscode/settings.json b/32.谈谈低耦合原则/.vscode/settings.json new file mode 100644 index 0000000..ce48fa6 --- /dev/null +++ b/32.谈谈低耦合原则/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "iosfwd": "cpp" + } +} \ No newline at end of file diff --git a/32.谈谈低耦合原则/01.Picture/Right.jpg b/32.谈谈低耦合原则/01.Picture/Right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5ff52493a4f5b39ec930352244e0fa41c2b786f GIT binary patch literal 22597 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 J=-LO*{4ba606qW! literal 0 HcmV?d00001 diff --git a/32.谈谈低耦合原则/02.Code/rightcode.cpp b/32.谈谈低耦合原则/02.Code/rightcode.cpp new file mode 100644 index 0000000..1ea0411 --- /dev/null +++ b/32.谈谈低耦合原则/02.Code/rightcode.cpp @@ -0,0 +1,41 @@ +#include + +#define ON true +#define OFF false + +class Object +{ + virtual ~Object(){} + virtual void on() = 0; + virtual void off() = 0; +}; + +class Lamp : public Object +{ +public: + void on() override { + // ... + } + void off() override { + // ... + } +}; + +class Button +{ +public: + Button(Object& obj): mObj(obj){} + void touch() { + if (mState == ON) { + mState = OFF; + mObj.off(); + } + else { + mState = ON; + mObj.on(); + } + } +private: + Object* mObj; + bool mState; +}; \ No newline at end of file diff --git a/32.谈谈低耦合原则/02.Code/wrongcode.cpp b/32.谈谈低耦合原则/02.Code/wrongcode.cpp new file mode 100644 index 0000000..5339bb6 --- /dev/null +++ b/32.谈谈低耦合原则/02.Code/wrongcode.cpp @@ -0,0 +1,34 @@ +#include + +#define ON true +#define OFF false + +class Lamp +{ +public: + void on() { + // ... + } + void off() { + // ... + } +}; + +class Button +{ +public: + Button(Lamp& lamp): mLamp(lamp){} + void touch() { + if (mState == ON) { + mState = OFF; + mLamp.off(); + } + else { + mState = ON; + mLamp.on(); + } + } +private: + Lamp& mLamp; + bool mState; +}; \ No newline at end of file diff --git a/README.md b/README.md index a82d6d5..0ca9b0a 100644 --- a/README.md +++ b/README.md @@ -141,3 +141,8 @@ Jungle设计模式系列 博客地址:https://blog.csdn.net/sinat_21107433/article/details/123150564 +32.啊,如何遵循“低耦合”设计原则? + +博客地址:https://blog.csdn.net/sinat_21107433/article/details/123160949 + +