David is John. It’s obvious by his eyes, skin, haircut, and clothes. But he wasn’t introduced to show Mary has a type. He wasn’t introduced to show how apathetic John is to having him at their wedding - which he certainly is, mind you. He wasn’t even introduced to be an easy way to write off a potential “Mary is unfaithful” plot twist - which they certainly could use. David was introduced for one main reason: to show us our biases when it comes to reading love between heterosexuals and homosexuals.
David obviously has a crush on Mary even though he claims they’re just friends. They were together for two years - “ages ago” he says. But Sherlock isn’t buying it. David always responds to her regardless of time or location because he has her on text alert. He even makes the photos of the couple on social media all about Mary.
John was with Sherlock for two years. “I haven’t seen him in ages.” John gave up seeing anyone else because of how invested he was with his life with Sherlock, he said so on his blog. Not to mention his blog is completely about Sherlock - the equivalent of plastering his social media with the one he pines after. John comments to Sherlock regardless of time or location, considering he’ll still write to him in the comments even though Sherlock is in the flat with him. They never stop talking.
David’s love is overwhelmingly obvious but John’s is “just friendship”? Do you have anything to say in your defence?