import java.lang.reflect.InvocationTargetException; /** * @author yanababs * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */ public class ProxySoldat implements Soldat { private Soldat soldat; public ProxySoldat(String nom) { try { soldat = (Soldat) Class.forName(nom).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * (non-Javadoc) * * @see Soldat#attaquer() */ public int attaquer() { return soldat.attaquer(); } /* * (non-Javadoc) * * @see Soldat#défendre(int) */ public void défendre(int force) throws DeadWarriorException { soldat.défendre(force); } public void décore(String décorateur) { try { Class[] classArray = { Class.forName("Soldat") }; Object[] arguments = { soldat }; Class c = Class.forName(décorateur); soldat = (Soldat) c.getConstructor(classArray).newInstance( arguments); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }