Work in progress (part II)

  • gpuchtel

    After a long hiatus, the result of many factors, and some recent interest to participate, this project once again has focus. Therefore, it seems prudent to publicize a roadmap of pending updates and a reiterate some original objectives. First and foremost, the book, in my opinion, succeeds in demonstrating design patterns. Second, and problematically, for me, the book is Java-centric, whereas my language of choice is C++. This project is the result of exploring design patterns (and principles) in conjunction with learning and applying good C++ practices and idioms; however, it is a work-in-progress as follows:


    Each version is volatile! That is, they will change based on discovering better methods and strong argument against current methods. Therefore, the following is left to do:
    - Create Linux versions
    - Create unit test cases
    - Critique implementations
    - Include more documentation and annotations
    - Include more (lesser known and forgotten) patterns


    A 'syntactical' translation; simply get it to compile, execute and produce the same output as the Java examples with minimal changes. No regard is given for memory leaks, structural integrity, and thread or exception safety. Moreover, this version is currently missing several samples. Therefore, the following is left to do:
    - Create samples for the missing patterns
    - Create ‘Bronze’ versions of the ‘left over’ patterns currently found in the ‘Silver’ version


    A 'semantical' translation; convey the samples explicit and implicit meaning using C++ idioms and good practices without changing the overall theme. In its current state, the ‘Silver’ version falls short of this goal because effort was given to providing examples of the “left over” patterns rather than C++ idioms. Therefore, the following is left to do:
    - Create static library that contains core classes currently duplicated in each project
    - Refactor examples using more C++ idioms and classes that are composites of those examples. In other words, create classes that can exhibit behavior of any/all examples
    - Resolve known pattern idiosyncrasies. For example, the cyclic dependency of the ‘Observer’ pattern


    A ‘paradigm’ translation; convey the samples in the so-called 'modern' style using 'templates’. Although 'some' thought and (actual) work has been done, it is dependent on a refactored ‘Silver’ version an a better understanding of templates ;-)