Users interact with middleware on an abstract level—a key principle in object-oriented programming. Essentially, it means we know an object’s functionality exists, but we’re not thinking about the mechanics of that functionality. Just like we know that turning on a faucet makes water run without first considering how the plumbing will work
upwork
