[newbie] Looking for a good introduction to object oriented programming with Python
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Tue Aug 7 01:35:00 EDT 2012
On Mon, 06 Aug 2012 10:24:10 +0100, lipska the kat wrote:
> er, the point I was trying to make is that when you say 'interface' it
> could mean so many things. If you say 'facade' everyone knows exactly
> what you are talking about. And that is EXACTLY the point.
The whole point of design patterns is to avoid getting stuck in
incidental implementation details of a particular library or class and
look for higher-level design patterns.
The same applies to facade -- it's just a special case of the interface
pattern. Why get stuck in incidental implementation details of the
particular *kind* of interface layer you need?
Obviously the person writing the interface/facade/adaptor/whatever needs
to understand the implementation details. But the people using the
interface don't.
Why waste brain CPUs trying to decide whether a particular interface is a
facade, an adaptor, a bridge, a proxy, ... ? Especially since in real-
life code, any such interface is going to include elements of all of the
above. Take this example from Wikipedia's article on Facade pattern:
========= ========
Pattern Intent
========= ========
Adapter Converts one interface to another so that it matches
what the client is expecting
Decorator Adds responsibility to the interface without altering it
Facade Provides a simplified interface
========= ========
It's rare that the intent is as pure as that. Normally it will be:
"Simplify the interface, oh and also change the API of these three
methods to match this other library, and add a couple of helper methods,
and while you're at it, this method has a bug that upstream refuses to
patch, do something about that."
So is that a facade or an adaptor, or something else?
--
Steven
More information about the Python-list
mailing list