<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">This may be a question of what jargon we’ve encountered, but to me, “singleton" clearly means "the one unique instance of this class" while “instance" means "any instance of this class". If I hadn’t seen this thread, I would interpret Class::instance() to mean “create a brand new instance of this class” rather than “return the unique singleton instance of this class, creating if necessary".</div><div class=""><br class=""></div><div class="">Regards,</div><div class="">Maciej</div><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 28, 2015, at 8:54 PM, Chris Dumez &lt;<a href="mailto:cdumez@apple.com" class="">cdumez@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Yes, instance() is what I’ve seen mostly outside WebKit as well. This would be my preference.<br class=""><div class=""><br class="webkit-block-placeholder"></div><div apple-content-edited="true" class="">
<div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Kr,<br class="Apple-interchange-newline">--</div><div class="">Chris Dumez - Apple Inc.</div><div class="">Cupertino, CA</div></div></div>
</div>
<br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 28, 2015, at 8:44 PM, Michael Catanzaro &lt;<a href="mailto:mcatanzaro@igalia.com" class="">mcatanzaro@igalia.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">On Wed, Jan 28, 2015 at 8:11 PM, Maciej Stachowiak &lt;<a href="mailto:mjs@apple.com" class="">mjs@apple.com</a>&gt; wrote:<br class="">
<blockquote type="cite" class=""><div class="plaintext" style="white-space: pre-wrap;">Yet another possibility is finding a better name than ‘shared’ for the singleton pattern function, but I don’t have any better ideas. Class::getSingleton() is more explicit but the extra verbosity doesn’t seem helpful to me.</div></blockquote><br class=""><div class="">I recommend Class::instance(), which is what I've seen used almost exclusively outside of WebKit. It's what Scott Meyers used, and it's very similar to the Gang of Four's choice of Class::Instance() and the Java pattern Class.INSTANCE.</div><div class=""><br class=""></div><div class="">That said, Class::singleton() is very attractive too.</div><div class=""><br class=""></div><div class="">I've never seen Class::shared() used anywhere except WebKit. The first time I saw this I had no clue what it was until I looked up the implementation.</div><div class=""><br class=""></div><div class="">All of these can get quite annoying to type, especially when the name of the class is long. (Sometimes I will keep a reference to the instance in a local variable with a shorter name.) But I think they're easier to read than free functions, and we should optimize for reading code, not writing it. Not a big deal either way.</div>_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class=""><a href="https://lists.webkit.org/mailman/listinfo/webkit-dev" class="">https://lists.webkit.org/mailman/listinfo/webkit-dev</a><br class=""></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></body></html>