Kite Programming Language

The Singleton Pattern

SIngletons are nearly universal amongst object oriented programming languages, but for each language someone had to work out how to write it. So that's what I've done — the first ever Singleton implementation in Kite.

class Singleton [
	property stored_instance,
	
	construct () [
		exp = make System.exceptions.AccessDenied(
			"Cannot directly instanciate a Singleton."
		);
		exp|throw();
	],
	
	construct (create) [],
	
	method get_instance () [
		decide [ (this.stored_instance is System.null) [
			this.stored_instance = make this(true);
		]];
		
		this.stored_instance;
	]
];

class Test from Singleton [];

test = Test|get_instance();
test|print;

Points of interest:

  • To prevent the Singleton from being instantiated by accident we throw an exception in the default constructor.
  • We also need a constructor that doesn't throw an expection, or we'd never be able to instantiate the class.

Written by Rowan Lewis on Thursday 5th of February, 2009