原创 CMake: Property Propagation
1. 重點關注對象屬性(Property)的編譯標誌(Compile flags)和鏈接標誌(Link flags): Compile flags [INTERFACE_]INCLUDE_DIRECTORIES [INTERFACE_]
原创 Design Patterns 19: Observer
定義對象之間一對多的依賴性,當其中一個狀態發生變化的時候,通知並更新所有的依賴對象。 #include <list> struct Subject; struct Observer { virtual void Updat
原创 Design Patterns 21: Strategy
定義一組算法,使得算法之間具有互換性。 struct Strategy { virtual void AlgorithmInterface() = 0; }; struct ConcreteStrategyA : Strate
原创 Design Patterns 22: Template Method
定義算法的結構,將具體步驟推遲到派生類。 struct AbstractClass { void TemplateMethod() { PrimitiveOperationA(); Pr
原创 Design Patterns 18: Memento
在不違反封裝原則的前提下,捕獲記錄對象的內部狀態,使得對象具備復原的能力。 struct Memento { int GetState() { return _state; }; void SetState(Memen
原创 Design Patterns 20: State
當對象內部狀態變化時,允許改變對象自身的行爲。 struct State { virtual void Handle() = 0; }; struct ConcreteStateA : State { void Ha
原创 Design Patterns 23: Visitor
用以實現對於特定對象結構內部特定元素的具體操作。 struct AssignmentNode; struct VariableRefNode; struct NodeVisitor { virtual void Visit
原创 Design Patterns 14: Command
將請求(request)封裝成對象 struct Receiver { void Action() {} }; struct Command { virtual void Execute() = 0; }; str
原创 Design Patterns 15: Interpreter
通過定義語法來解釋自然語言 struct RegularExpression { virtual void Interpret() = 0; }; struct RepetitionExpression : RegularE
原创 Design Patterns 16: Iterator
在不暴露底層的情況下,提供遍歷組合對象的方法。 struct Aggregate; struct ConcreteAggregate; struct Iterator {}; struct ConcreteIterator : I
原创 Design Patterns 13: Chain of Responsibility
通過多個對象響應消息的方式,避免消息的發送端和接受端之間的耦合。 struct Handler { virtual void HandleRequest() { if (_successor) _s
原创 Design Patterns 17: Mediator
解耦對象之間的聯繫
原创 Design Patterns 11: Flyweight
用以高效支持數量龐大的小構件對象 #include <list> struct Context {}; struct Point {}; struct Glyph { virtual void Draw(Context)
原创 Design Patterns 10: Facade
爲一套子系統提供一個統一的界面(Facade) #include <iostream> struct BytecodeStream {}; struct Scanner { Scanner(std::istream& in
原创 Design Patterns 7: Bridge
解耦抽象界面(Abstraction)與具體實現(Implementor, ConcreteImplementorA, ConcreeteImplementorB),界面(Abstraction)與實現(Implementor)之間的關係