Facade

Definition: The facade pattern creates one simple interface to replace a set of one or more interfaces, which might be quite complex.

Usage: Use the facade pattern to simplify a complicated subsystem.

Example

class RandomUtil {
	byte getRandomElement(final byte[] array) {
		return array[getRandomIndex(array)];
	}

	char getRandomElement(final char[] array) {
		return array[getRandomIndex(array)];
	}

	double getRandomElement(final double[] array) {
		return array[getRandomIndex(array)];
	}

	float getRandomElement(final float[] array) {
		return array[getRandomIndex(array)];
	}

	int getRandomElement(final int[] array) {
		return array[getRandomIndex(array)];
	}

	long getRandomElement(final long[] array) {
		return array[getRandomIndex(array)];
	}

	short getRandomElement(final short[] array) {
		return array[getRandomIndex(array)];
	}

	Object getRandomElement(final Object[] array) {
		return array[getRandomIndex(array)];
	}

	int getRandomIndex(final byte[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final char[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final double[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final float[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final int[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final long[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final short[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	int getRandomIndex(final Object[] array) {
		return randomNumberGenerator.nextInt(array.length);
	}

	Random randomNumberGenerator = new Random();
}

This class simplifies access to the class Random. Essentially, it saves a few keypresses when writing code that gets random elements from arrays. The real world version of this class included additional methods for getting random booleans, ints, longs, etc.

Index

Copyright (C) 2008-2009 Steven Fletcher. All rights reserved.