Of course.
I guess many programmers come up with similar solutions without knowing any of 
the described and written down patterns.
But I think it’s good to know them because by giving something a name it’s 
easier to talk about it.


Manfred

> Am 06.02.2021 um 17:51 schrieb Michael Fiano <m...@mfiano.net>:
> 
> I completely agree that most design patterns are the result of deficiencies 
> in most OO languages and could be solved with Lisp easily, usually with 
> defmacro. I'd also like to add what the author of one of my favorite books 
> had to say on the topic:
> 
> Design patterns are purported "master programmer advice" strongly suggesting 
> to young or otherwise impressionable programmers that the design patterns 
> convey important concepts, practices, or principles that have been 
> "prethought." However, design patterns are not "master programmer advice!" 
> Any master programmer would know that you cannot simply dish out a small 
> number of generic solutions for generic situations, but that every situation 
> is (potentially) different and warrants its own (potential) solution.
> 
> On Sat, Feb 6, 2021, at 11:42 AM, Pascal Bourguignon wrote:
>> Le 06/02/2021 à 17:35, Pascal Bourguignon a écrit :
>>> Now, where would defmacro enter the scene?  We could define a few macros 
>>> and supporting functions to be able to define factories with their set 
>>> of concrete classes; the macro would expand to the boilerplate code, 
>>> such as the generic and methods, according to the implementation choice 
>>> (alist, factory class, factory symbol, etc).
>>> 
>>> 
>>> (define-abstract-factory gui-factory
>>>    (window pane button textfield))
>>> 
>>> (define-factory x11-factory gui-factory
>>>    (x11-window x11-pane x11-button x11-textfield))
>>> 
>>> (define-factory x11-factory gui-factory
>>>    (macos-window macos-pane macos-button macos-textfield))
>>> 
>>> (defparameter *gui-factory* (make-factory 'x11-factory))
>>> 
>>> [...]
>>> 
>>> In effect, the abstract factory meta design pattern is thus implemented 
>>> in lisp as a define-abstract-factory macro, and the concrete abstract 
>>> factory design pattern as a define-factory macro.
>> 
>> 
>> I should add that while defining such macros may seem useless given the 
>> small about of boilerplate they would cover, they offer the advantage of 
>> providing an abstraction, that would let you change easily the 
>> implementation at a later time (either to add features, or for 
>> optimization reasons, etc).
>> 
>> 
>> -- 
>> __Pascal Bourguignon__
>> 
>> 
> 


Reply via email to