在庫管理とシングルトン
戻る
::::::::::::::
AbstractItem.java
::::::::::::::
package InventoryManagement;
/**
* <pre>
* トレースバック・フォワード対象となるアイテムを表現する抽象クラス
* </pre>
* $Id: InventoryManagement.html,v 1.1 2009/06/22 16:11:47 kishi Exp kishi $
*/
abstract public class AbstractItem {
/** 個体識別番号 */
protected int id;
/** アイテムの状態を表現するステータス */
public enum Status {
/** マーキング前 */ PRE_MARKING,
/** 登録前 */ PRE_REGISTRATION,
PRE_OUTPUT,
PRE_REPAIRED,
REPAIRED,
DISCARDED
}
/** 何回利用可能かを表す */
protected int availableCount;
/** アイテム供給元 */
protected ItemProvider itemProvider;
/**
* @param provider 仕入先
* @param availableCount 利用可能回数
*/
public AbstractItem( ItemProvider itemProvider, int availableCount ) {
this.itemProvider = itemProvider;
this.availableCount = availableCount;
id = IDProvider.getInstance().getNextId();
}
protected int getId() {
return id;
}
protected ItemProvider getItemProvider() {
return itemProvider;
}
}
::::::::::::::
Cutter.java
::::::::::::::
package InventoryManagement;
/**
* <pre>
* カッター
* </pre>
* $Id: InventoryManagement.html,v 1.1 2009/06/22 16:11:47 kishi Exp kishi $
*/
public class Cutter extends AbstractItem {
public Cutter( ItemProvider provider, int availableCount ) {
super( provider, availableCount );
}
public static void main( String[] args ) {
ItemProvider provider = new ItemProvider();
provider.setName( "青木製鋼" );
Cutter cutter1 = new Cutter( provider, 100 );
System.out.println( cutter1.getId() );
}
}
::::::::::::::
IDProvider.java
::::::::::::::
package InventoryManagement;
/**
* <pre>
* IDを付与するクラス(シングルトン)
* </pre>
* $Id: InventoryManagement.html,v 1.1 2009/06/22 16:11:47 kishi Exp kishi $
*/
public class IDProvider {
/** インスタンス */
static private IDProvider uniqueInstance;
/** カウンタ */
static private int counter = 0;
public static IDProvider getInstance() {
if ( uniqueInstance == null ) {
// 初めて呼ばれたときだけインスタンス化
uniqueInstance = new IDProvider();
}
return uniqueInstance;
}
public static synchronized int getNextId() {
counter++;
return counter;
}
}
::::::::::::::
ItemProvider.java
::::::::::::::
package InventoryManagement;
/**
* <pre>アイテム供給元(仕入先)</pre>
* $Id: InventoryManagement.html,v 1.1 2009/06/22 16:11:47 kishi Exp kishi $
*/
public class ItemProvider {
private String name;
public void setName( String name ) {
this.name = name;
}
static public void main( String[] args ) {}
}
::::::::::::::
Knife.java
::::::::::::::
戻る