001package jmri; 002 003/** 004 * Represent a Memory, a place to store values. 005 * <p> 006 * The AbstractMemory class contains a basic implementation of the state and 007 * messaging code, and forms a useful start for a system-specific 008 * implementation. 009 * <p> 010 * The states and names are Java Bean parameters, so that listeners can be 011 * registered to be notified of any changes. 012 * <p> 013 * Each Memory object has a two names. The "user" name is entirely free form, 014 * and can be used for any purpose. The "system" name is provided by the 015 * system-specific implementations, and provides a unique mapping to the layout 016 * control system (for example LocoNet or NCE) and address within that system. 017 * <br> 018 * <hr> 019 * This file is part of JMRI. 020 * <p> 021 * JMRI is free software; you can redistribute it and/or modify it under the 022 * terms of version 2 of the GNU General Public License as published by the Free 023 * Software Foundation. See the "COPYING" file for a copy of this license. 024 * <p> 025 * JMRI is distributed in the hope that it will be useful, but WITHOUT ANY 026 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 027 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 028 * 029 * @author Bob Jacobsen Copyright (C) 2001 030 * @see jmri.implementation.AbstractMemory 031 * @see jmri.MemoryManager 032 * @see jmri.InstanceManager 033 */ 034public interface Memory extends NamedBean { 035 036 /** 037 * Constant for property changes when the value is changed. 038 */ 039 String PROPERTY_VALUE = "value"; 040 041 /** 042 * Get the stored value. The type of this depends on what was stored... 043 * 044 * @return the stored value 045 */ 046 Object getValue(); 047 048 /** 049 * Set the value. Any type of Object can be stored, but various utilities 050 * use the toString method of the stored Object. 051 * 052 * @param value the value to store 053 */ 054 void setValue(Object value); 055 056}