[Qt-interest] Design Patterns
Ross Bencina
rossb-lists at audiomulch.com
Tue Nov 10 11:16:48 CET 2009
Hi Erpin
Oliver.Knoll wrote:
> erpin2006 wrote on Monday, November 09, 2009 1:25 PM:
>
>> I recently read Design Pattern by GoF. However, now I find I cann't
>> write anything anymore!
>
> Welcome to the next level! Don't worry, your dizzyness is absolutely
> normal and will fade quite quickly in time!
>
> Now that you know about design patterns you can go on a learn about why
> class inheritance is evil ;)
Or read the PLOPD books and discover that there are actually 12 distinct
sub-types of Proxy design pattern and plenty more useful design patterns. If
you enjoyed GoF I highly recommend the PLOPD books -- I was just thinking of
Conduit Of Change vs Observer last night. After I read GoF there were a few
patterns which I found I could make use of straight away.. good starting
points are: Singleton, Factory, Observer others may take longer to find
their way into your toolbox.
Someone wiser than I pointed out that many GoF design patterns are just
workarounds for natural functional programming constructs (to make up for
the fact that C++ doesn't have closures for example).
Qt implements quite a few design patterns:
Abstract Factory:
QMetaObject::newInstance()
http://doc.trolltech.com/4.5/qmetaobject.html
Adapter / Proxy:
QGraphicsProxyWidget (adapts QWidget into a QGraphicsItem)
http://doc.trolltech.com/4.5/qgraphicsproxywidget.html
Composite:
QObject / QWidget
http://doc.trolltech.com/4.5/qobject.html
http://doc.trolltech.com/4.5/qwidget.html
Facade:
QListWidget, QTreeWidget, QTableWidget
http://doc.trolltech.com/4.5/qlistwidget.html
http://doc.trolltech.com/4.5/qtreewidget.html
http://doc.trolltech.com/4.5/qtablewidget.html
Chain of Responsibility:
QWidget and QGraphicsItem event bubbling
Command:
QUndoCommand
http://doc.trolltech.com/4.5/qundocommand.html
Interpreter:
QScriptEngine:
http://doc.trolltech.com/4.5/qscriptengine.html
Memento:
QByteArray in QMainWindow::saveState() / restoreState()
Observer:
Signals & Slots
Model/View framework
http://doc.trolltech.com/4.5/model-view-programming.html
Any others in Qt?
If you're looking for another enlightening read try Martin Fowler's
"Refactoring" -- another Addison Wesley book which changed my life.
Cheers
Ross.
More information about the Qt-interest-old
mailing list