00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027 package org.mpcl.designpatterns.behavioral;
00028
00029 import java.util.Iterator;
00030 import java.util.Vector;
00031
00032
00052 public class TMutable implements IMutable
00053 {
00054
00056 private boolean gNeedMutation;
00057
00059 protected Vector tMutatorVector;
00060
00061
00062
00063
00064
00065
00071 protected void clearNeedMutation()
00072 {
00073 gNeedMutation = false;
00074 }
00075
00076
00077
00078
00079
00080
00085 public TMutable()
00086 {
00087 gNeedMutation = false;
00088 tMutatorVector = new Vector();
00089 }
00090
00096 public void addMutator (IMutator tMUTATOR)
00097 {
00098 tMutatorVector.add (tMUTATOR);
00099 }
00100
00105 public void deleteMutator (IMutator tMUTATOR)
00106 {
00107 tMutatorVector.remove (tMUTATOR);
00108 }
00109
00111 public void deleteMutators()
00112 {
00113 tMutatorVector.removeAllElements();
00114 }
00115
00120 public void setNeedMutation()
00121 {
00122 gNeedMutation = true;
00123 }
00124
00125
00126
00127
00128
00129
00134 public int countMutators()
00135 {
00136 return tMutatorVector.size();
00137 }
00138
00143 public boolean needMutation()
00144 {
00145 return gNeedMutation;
00146 }
00147
00154 public void notifyMutators()
00155 {
00156 notifyMutators (null);
00157 }
00158
00167 public void notifyMutators (Object tARGUMENT)
00168 {
00169
00170 if ( needMutation() )
00171 {
00172 IMutator tMutator;
00173 Iterator I = tMutatorVector.iterator();
00174
00175 while ( I.hasNext() )
00176 {
00177 tMutator = (IMutator) I.next();
00178 tMutator.update (this, tARGUMENT);
00179 }
00180 clearNeedMutation();
00181 }
00182
00183 }
00184
00185 }