3 ms·
Okay, let's take an excerpt from one of those enterprise "hello world"s: IHelloWorldString helloWorldString = helloWorld.getHelloWorld(); IPrintStrateg
by Joker_vD 4y ago
Okay, let's take an excerpt from one of those enterprise "hello world"s:
IHelloWorldString helloWorldString = helloWorld.getHelloWorld();
IPrintStrategy printStrategy = helloWorld.getPrintStrategy();
IStatusCode code = helloWorld.print(printStrategy, helloWorldString);
Extracting two subobjects from an object to feed them back to the same very object is not an abstraction, it's merely adding a bunch of public methods (and interfaces) to the object. That may or may not help in abstracting things: and usually, the more handles and bells and whistles are available to pull and play with, the less abstracted the code actually is.
- simplotek 4y ago> it's merely adding a bunch of public methods (and interfaces) What do the interfaces represent?
- Joker_vD 4y agoIn this case, nothing particularly meaningful or useful, they mostly just shrink wrap the underlying (single) implementation's details and re-expose them as-is for the caller to cope with. Some people also think that that somehow helps with encapsulation too.
- simplotek 4y ago> In this case, nothing particularly meaningful or useful You're either playing dumb or weren't able to understand what was in the code. IHelloWorldString is an abstraction over the way the string was implemented, IPrintStrategy is a strategy pattern that abstracts away how the abstract hello world string is supposed to be printed, and finally IStatusCode is an abstraction over how a status code is implemented. > they mostly just shrink wrap the underlying (single) implementation's details and re-expose them as-is for the caller to cope with. No, not really. Their purpose is to abstract away implementations. Just because there's a single implementation that does not mean this wasn't abstracted away.
- Tomis02 4y agoThere's using "abstraction" in the classical sense of "harder to understand", as in "abstract painting". In today's world, good abstractions are the exception. > it's merely adding a bunch of public methods (and interfaces) to the object The object is the abstraction they're complaining about. Why have an object to begin with?