turnstyle.java

来自「著名的uncle Bob的Agile software development的」· Java 代码 · 共 102 行

JAVA
102
字号
public class Turnstyle
{
	private static boolean isLocked;
	private static boolean isAlarming;
	private static int itsCoins;
	private static int itsRefunds;
	protected final static Turnstyle LOCKED = new Locked();
	protected final static Turnstyle UNLOCKED = new Unlocked();
	protected static Turnstyle itsState = LOCKED;

	public void reset()
	{
		lock(true);
		alarm(false);
		itsCoins = 0;
		itsRefunds = 0;
		itsState = LOCKED;
	}

	public boolean locked()
	{
		return isLocked;
	}

	public boolean alarm()
	{
		return isAlarming;
	}

	public void coin()
	{
		itsState.coin();
	}

	public void pass()
	{
		itsState.pass();
	}

	protected void lock(boolean shouldLock)
	{
		isLocked = shouldLock;
	}

	protected void alarm(boolean shouldAlarm)
	{
		isAlarming = shouldAlarm;
	}

	public int coins()
	{
		return itsCoins;
	}

	public int refunds()
	{
		return itsRefunds;
	}

	public void deposit()
	{
		itsCoins++;
	}

	public void refund()
	{
		itsRefunds++;
	}
}

  class Locked extends Turnstyle
{
	public void coin()
	{
		itsState = UNLOCKED;
		lock(false);
		alarm(false);
		deposit();
	}

	public void pass()
	{
		alarm(true);
	}
}

class Unlocked extends Turnstyle
{
	public void coin()
	{
		refund();
	}

	public void pass()
	{
		lock(true);
		itsState = LOCKED;
	}
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?