• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 22:32
CET 03:32
KST 11:32
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy7ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book19Clem wins HomeStory Cup 289
Community News
Weekly Cups (March 16-22): herO doubles, Cure surprises3Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool48Weekly Cups (March 9-15): herO, Clem, ByuN win42026 KungFu Cup Announcement6BGE Stara Zagora 2026 cancelled12
StarCraft 2
General
Potential Updates Coming to the SC2 CN Server What mix of new & old maps do you want in the next ladder pool? (SC2) Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Weekly Cups (March 16-22): herO doubles, Cure surprises Weekly Cups (August 25-31): Clem's Last Straw?
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament World University TeamLeague (500$+) | Signups Open RSL Season 4 announced for March-April WardiTV Team League Season 10 KSL Week 87
Strategy
Custom Maps
[M] (2) Frigid Storage Publishing has been re-enabled! [Feb 24th 2026]
External Content
The PondCast: SC2 News & Results Mutation # 518 Radiation Zone Mutation # 517 Distant Threat Mutation # 516 Specter of Death
Brood War
General
Which mirror match you like most or least? How much money terran looses from gas steal? Gypsy to Korea BGH Auto Balance -> http://bghmmr.eu/ mca64Launcher - New Version with StarCraft: Remast
Tourneys
[ASL21] Ro24 Group C [ASL21] Ro24 Group B [Megathread] Daily Proleagues 2026 Changsha Offline Cup
Strategy
What's the deal with APM & what's its true value Fighting Spirit mining rates Simple Questions, Simple Answers Soma's 9 hatch build from ASL Game 2
Other Games
General Games
General RTS Discussion Thread Nintendo Switch Thread Stormgate/Frost Giant Megathread Path of Exile Dawn of War IV
Dota 2
Official 'what is Dota anymore' discussion The Story of Wings Gaming
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Five o'clock TL Mafia Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia
Community
General
US Politics Mega-thread Canadian Politics Mega-thread Russo-Ukrainian War Thread European Politico-economics QA Mega-thread Things Aren’t Peaceful in Palestine
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Req][Books] Good Fantasy/SciFi books Movie Discussion! [Manga] One Piece
Sports
Cricket [SPORT] 2024 - 2026 Football Thread Formula 1 Discussion Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
Laptop capable of using Photoshop Lightroom?
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
Unintentional protectionism…
Uldridge
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 6547 users

The Big Programming Thread - Page 796

Forum Index > General Forum
Post a Reply
Prev 1 794 795 796 797 798 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
November 09 2016 21:13 GMT
#15901
oh yeah I didn't even notice it actually does have the object as the return type
ok so bounded type parameter, i'll look at that up
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
November 09 2016 21:20 GMT
#15902
A singleton is a glorified static variable. Static variables are usually bad. Sometimes a singleton is a static constant. That's better, but probably still a pointless use of a pattern.

Don't use singletons just because you only need a single instance of that class. You can consider using them if it is absolutely critical that there never is more than one instance of that class. And even then there might be better alternatives. Singleton is taught way too carelessly and as a result many people think it's a good pattern when it really is not (most of the time). There probably also is a historic reason to the prominence of the pattern, because it allowed people who came from C to use static variables in the then new C++ while still pretending that they have successfully adopted OPP principles.

The pattern has very real drawbacks (threading issues, hard to get away from if needed) that might not be apparent at the moment but often come back to haunt you.
If you have a good reason to disagree with the above, please tell me. Thank you.
RoomOfMush
Profile Joined March 2015
1296 Posts
Last Edited: 2016-11-09 21:54:12
November 09 2016 21:51 GMT
#15903
There are a rare few good uses for the singleton pattern but none of them make much sense for regular software developement. I recently started a course on Operating System Programming and using singletons there, for example for driver controllers, etc, can make a lot of sense. When you are working with memory mapped external devices you dont want two instances of your controller messing each other up.

There is no build-in support for singletons in the java language. You usually use Singletons in java by either defining a "public static final" member variable in some kind of class or by using a "public static" method which will (lazy) initialize a "private static final" member variable and return it.
Example:
public class BigBadController {

private static BigBadController instance;

public static BigBadController getInstance() {
if (instance == null) {
instance = new BigBadController();
}
return instance;
}

private BigBadController() {
// do stuff
}

}

or if you have a multithreaded application:
public class BigBadController {

private static BigBadController instance;
private static final ReentrantLock lock = new ReentrantLock();

public static BigBadController getInstance() {
try {
lock.lock();
if (instance == null) {
instance = new BigBadController();
}
} finally {
lock.unlock();
}
return instance;
}

private BigBadController() {
// do stuff
}

}
AKnopf
Profile Blog Joined March 2011
Germany259 Posts
November 09 2016 23:09 GMT
#15904
Or you use java enterprise edition and inject a singleton instance. This way you can also implement against an interface instead of the concrete class
The world - its a funny place
Manit0u
Profile Blog Joined August 2004
Poland17702 Posts
November 10 2016 03:52 GMT
#15905
[image loading]
Time is precious. Waste it wisely.
Neshapotamus
Profile Blog Joined May 2006
United States163 Posts
November 10 2016 04:30 GMT
#15906
On November 10 2016 12:52 Manit0u wrote:
[image loading]


Dependency Injection alone is great. I use it for unit testing and such.

However, as soon as you introduce dependency injection, you will almost certainly see it with coupled with "inversion of control".

To implement inversion of control, you will start using a container.

Containers solve dependency injection but introduce object lifetime management problems.

In a typed language, you will trade compile time errors for runtime errors. Why bother using a typed language?

You API design is going to down the shitter.

Eventually, your code it going to be unmanageable because your API is so fucked.
ex: A -> B -> C -> D .... -> Z
People stop caring about API design because ill let my container figure out how to resolve dependencies instead of making the api better.

I don't have a solution to this, but I have seen this happen way too many times. It makes we wonder if dependency injection is the answer. Ultimately, dependency injection is just a glorified term for passing a parameter to a function.

I think functional programming is the answer as this is what functional programming solves inherently in the language.


phar
Profile Joined August 2011
United States1080 Posts
November 10 2016 07:00 GMT
#15907
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html
Who after all is today speaking about the destruction of the Armenians?
Manit0u
Profile Blog Joined August 2004
Poland17702 Posts
November 10 2016 07:07 GMT
#15908
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."
Time is precious. Waste it wisely.
Djagulingu
Profile Blog Joined December 2010
Germany3605 Posts
November 10 2016 07:32 GMT
#15909
On November 10 2016 16:07 Manit0u wrote:
Show nested quote +
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean

Show nested quote +

Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit
"windows bash is a steaming heap of shit" tofucake
ZigguratOfUr
Profile Blog Joined April 2012
Iraq16955 Posts
November 10 2016 07:41 GMT
#15910
On November 10 2016 16:32 Djagulingu wrote:
Show nested quote +
On November 10 2016 16:07 Manit0u wrote:
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit


Oh it's for real.

I have many more doubts about InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState (from com.sun.java.swing.plaf.nimbus.State).
emperorchampion
Profile Blog Joined December 2008
Canada9496 Posts
November 10 2016 12:44 GMT
#15911
On November 10 2016 16:41 ZigguratOfUr wrote:
Show nested quote +
On November 10 2016 16:32 Djagulingu wrote:
On November 10 2016 16:07 Manit0u wrote:
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit


Oh it's for real.

I have many more doubts about InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState (from com.sun.java.swing.plaf.nimbus.State).


rofl
TRUEESPORTS || your days as a respected member of team liquid are over
Djagulingu
Profile Blog Joined December 2010
Germany3605 Posts
November 10 2016 12:49 GMT
#15912
On November 10 2016 16:41 ZigguratOfUr wrote:
Show nested quote +
On November 10 2016 16:32 Djagulingu wrote:
On November 10 2016 16:07 Manit0u wrote:
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit


Oh it's for real.

I have many more doubts about InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState (from com.sun.java.swing.plaf.nimbus.State).

http://www.javafind.net/gate.jsp?q=/library/36/java6_full_apidocs/com/sun/java/swing/plaf/nimbus/package-tree.html

It's the entire fucking package :D
"windows bash is a steaming heap of shit" tofucake
RoomOfMush
Profile Joined March 2015
1296 Posts
November 10 2016 14:07 GMT
#15913
On November 10 2016 21:49 Djagulingu wrote:
Show nested quote +
On November 10 2016 16:41 ZigguratOfUr wrote:
On November 10 2016 16:32 Djagulingu wrote:
On November 10 2016 16:07 Manit0u wrote:
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit


Oh it's for real.

I have many more doubts about InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState (from com.sun.java.swing.plaf.nimbus.State).

http://www.javafind.net/gate.jsp?q=/library/36/java6_full_apidocs/com/sun/java/swing/plaf/nimbus/package-tree.html

It's the entire fucking package :D

As far as I know these are auto-generated. No reason to argue about the readability of auto-generated code.
Acrofales
Profile Joined August 2010
Spain18244 Posts
November 10 2016 14:17 GMT
#15914
On November 10 2016 16:41 ZigguratOfUr wrote:
Show nested quote +
On November 10 2016 16:32 Djagulingu wrote:
On November 10 2016 16:07 Manit0u wrote:
On November 10 2016 16:00 phar wrote:
There exists also the concept of using dependency injection to inject... a singleton.

e.g. https://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/Singleton.html


This reminds me of the good old AbstractSingletonProxyFactoryBean


Convenient proxy factory bean superclass for proxy factory beans that create only singletons.


Taken from "Everything wrong with Java in a single class."

Is this shit for real or did Spring guys create this shit just for fun and games and shit


Oh it's for real.

I have many more doubts about InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState (from com.sun.java.swing.plaf.nimbus.State).


Well, that's just a naming convention gone horribly wrong. I have no idea what the class is supposed to do, but it seems like something you might want to do. The other one... why in the holy hell would anybody create something like that? Just click on it. And then click through to the superclasses and things; there's plenty of goodness there. But before you click, ask yourself one simple question: what does a factory to create singletons do?
Manit0u
Profile Blog Joined August 2004
Poland17702 Posts
November 10 2016 14:36 GMT
#15915
http://evilbydesign.info/

Good read for anyone.
Time is precious. Waste it wisely.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
Last Edited: 2016-11-11 01:29:43
November 11 2016 01:19 GMT
#15916
it's all coming together..
Blitzkrieg0
Profile Blog Joined August 2010
United States13132 Posts
Last Edited: 2016-11-11 01:31:46
November 11 2016 01:25 GMT
#15917
For polymorphism you just need to declare everything as a Tree. The Tree class is your interface or contract of all the methods that your subclasses will implement. Your Tree object knows if its a NonEmptyTree or an EmptyTree and will use the appropriate method due to polymorphism so you don't have to cast or check which class it is.

On November 11 2016 10:19 travis wrote:
For example an insert method

inserting into an empty tree is easy. just return a nonemptytree with the key and value.
inserting into the nonempty tree, I use recursion to check for duplicate key, if i hit a duplicate i replace the value. using compareTo I move left/right down the tree appropriately until.... i hit a leaf. but how the fuck will I know when I hit a leaf? What does polymorphism have to do with any of this?


You're going to have an insert method for the NonEmptyTree class and a different method implementation for the EmptyTree class. Polymorphism as described above will determine which method will be executed. You don't actually know when you hit a leaf. The code does though which is the point of polymorphism.
I'll always be your shadow and veil your eyes from states of ain soph aur.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
Last Edited: 2016-11-11 01:33:48
November 11 2016 01:29 GMT
#15918
OH, so the way I use my methods is by using my "right" and "left" tree members? Since they are either nonemptytree OR emptytree(and they know)?
Blitzkrieg0
Profile Blog Joined August 2010
United States13132 Posts
Last Edited: 2016-11-11 01:41:29
November 11 2016 01:37 GMT
#15919
On November 11 2016 10:29 travis wrote:
OH, so the way I use my methods is by using my "right" and "left" tree members? Since they are either nonemptytree OR emptytree?


I'll try to go through an example so it's clear...

Lets say I have a Tree structure like the following where E signifies an EmptyTree and the fourth level is all EmptyTree where I was too lazy to draw the rest of tree:

 root                     8
/ \
6 14
/ \ / \
3 E E 19


So I'm going to insert a new Tree into my structure which has the value 12. My insertion method will be called on the root. This is a NonEmptyTree so we'll be using that insertion method. This method determines if it go to the left or right child based on a simple comparison. 12 is greater than 8 so we'll call the insertion method on the right. Again we've hit a NonEmptyTree so the same thing happens. This time 12 is less than 14 so we'll call the insertion method on the left. Now we've hit an EmptyTree so a different method will be executed. This method is going to replace that node with a NonEmptyTree with the value 12.

Because of polymorphism, the code knows which method to execute and we don't actually know or care.
I'll always be your shadow and veil your eyes from states of ain soph aur.
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
Last Edited: 2016-11-11 01:42:48
November 11 2016 01:40 GMT
#15920
Okay I completely understand, that is awesome and makes sense. Thank you.

Suddenly I don't think this design is so annoying.

(it also means this project is way way easier than I thought)
Prev 1 794 795 796 797 798 1032 Next
Please log in or register to reply.
Live Events Refresh
Replay Cast
00:00
WardiTV Mondays #76
CranKy Ducklings99
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RuFF_SC2 202
StarCraft: Brood War
GuemChi 5153
Shuttle 379
sSak 52
NaDa 33
Bale 9
Dota 2
monkeys_forever521
League of Legends
JimRising 544
Counter-Strike
taco 1132
Super Smash Bros
hungrybox1496
Other Games
summit1g10801
tarik_tv4638
C9.Mang0300
WinterStarcraft300
PiGStarcraft284
Maynarde130
ViBE117
CosmosSc2 23
Organizations
Other Games
BasetradeTV162
Dota 2
PGL Dota 2 - Main Stream41
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 20 non-featured ]
StarCraft 2
• Berry_CruncH162
• Hupsaiya 61
• musti20045 53
• EnkiAlexander 39
• davetesta29
• CranKy Ducklings SOOP4
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• AfreecaTV YouTube
• sooper7s
StarCraft: Brood War
• RayReign 52
• Azhi_Dahaki11
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• masondota21642
League of Legends
• Doublelift5155
Upcoming Events
KCM Race Survival
6h 28m
The PondCast
7h 28m
WardiTV Team League
9h 28m
BASILISK vs Team Liquid
OSC
9h 28m
Replay Cast
21h 28m
WardiTV Team League
1d 9h
Big Brain Bouts
1d 14h
Fjant vs SortOf
YoungYakov vs Krystianer
Reynor vs HeRoMaRinE
RSL Revival
2 days
Cure vs Zoun
herO vs Rogue
WardiTV Team League
2 days
Platinum Heroes Events
2 days
[ Show More ]
BSL
2 days
RSL Revival
3 days
ByuN vs Maru
MaxPax vs TriGGeR
WardiTV Team League
3 days
BSL
3 days
Replay Cast
3 days
Replay Cast
4 days
Afreeca Starleague
4 days
Light vs Calm
Royal vs Mind
Wardi Open
4 days
Monday Night Weeklies
4 days
OSC
4 days
Sparkling Tuna Cup
5 days
Afreeca Starleague
5 days
Rush vs PianO
Flash vs Speed
Replay Cast
6 days
Afreeca Starleague
6 days
BeSt vs Leta
Queen vs Jaedong
Replay Cast
6 days
Liquipedia Results

Completed

Proleague 2026-03-24
WardiTV Winter 2026
Underdog Cup #3

Ongoing

KCM Race Survival 2026 Season 1
BSL Season 22
CSL Elite League 2026
CSL Season 20: Qualifier 1
ASL Season 21
Acropolis #4 - TS6
RSL Revival: Season 4
Nations Cup 2026
NationLESS Cup
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

2026 Changsha Offline CUP
CSL Season 20: Qualifier 2
CSL 2026 SPRING (S20)
Acropolis #4
IPSL Spring 2026
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
IEM Atlanta 2026
Asian Champions League 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.