です。私はJavaの初心者です。最近、私は春のフレームワークを学びます。私はいくつかの質問があります。それらを解決するために私を助けてください:Javaクラスのインターフェイスクラスは
私は1つのコントローラといくつかのクラスを作成します。ここにコントローラがあります:
@Controller @RequestMapping("/man") public class manController { private SwordImp Sword = new SwordImp(); private GunImp Gun = new GunImp(); private String mainWeapon; private String subWeapon; @RequestMapping(value = "set/{weapon:[a-z A-Z 0-9]+}", method = RequestMethod.GET) public String setWeapon(@PathVariable String weapon, Model model){ System.out.println(weapon); if(weapon.equals("gun")){ Gun.set(weapon); mainWeapon = Gun.getWeapon(); subWeapon = Gun.getSubWeapon(); }else{ if(weapon.equals("sword")){ Sword.set(weapon); mainWeapon = Sword.getWeapon(); subWeapon = Sword.getSubWeapon(); }else{ mainWeapon = "no weapon"; subWeapon = "no sub weapon"; } } model.addAttribute("weapon_status", mainWeapon); model.addAttribute("sub_weapon_status", subWeapon); return "man/index"; } }
私もいくつかのクラスを作成します。
武器インタフェース
public interface Weapon { public void set(String weaponName); public String getWeapon(); public String getSubWeapon(); }
剣クラス
public class SwordImp implements Weapon { private String weaponName = null; public void set(String weapon) { this.weaponName = "fire "+weapon; } public String getWeapon() { return this.weaponName; } public String getSubWeapon() { return "no sub weapon"; } }
ガンクラス
public class GunImp implements Weapon { private String weaponName = null; private String bullet = null; public void set(String weapon) { this.weaponName = "ice "+weapon; this.bullet = "need bullet"; } public String getWeapon() { return this.weaponName; } public String getSubWeapon() { return this.bullet; } }
質問は、私が持っている:
以下のように武器クラスと剣クラスにWeaponクラスを実装していないと、その機能がまだ機能しているように思えます...なぜインタフェースを使用する必要がありますか?
剣クラス
public class SwordImp {...}
ガンクラス
public class GunImp {...}
私は、リポジトリフォルダにクラスのすべてを入れてみてください。これは正しいパスですか?モデルフォルダに入れる必要がありますか?まず
、このように、私は武器インターフェースに銃クラスと剣クラスであることweaponName変数と弾丸の変数を入れてみてください、私はすべてのクラスでそれらを宣言する必要はありません。
武器インタフェース
public interface Weapon { private String weaponName = null; private String bullet = null; public void set(String weaponName); public String getWeapon(); public String getSubWeapon(); }
剣クラス
public class SwordImp implements Weapon { public void set(String weapon) { this.weaponName = "fire "+weapon; this.bullet = "no sub weapon"; } public String getWeapon() { return this.weaponName; } public String getSubWeapon() { return this.bullet; } }
ガンクラス
public class GunImp implements Weapon { public void set(String weapon) { this.weaponName = "ice "+weapon; this.bullet = "need bullet"; } public String getWeapon() { return this.weaponName; } public String getSubWeapon() { return this.bullet; } }
しかし、これは間違っているようです...誰でも私に理由を教えていただけますか?
おかげ
OOPに関するいくつかの理論をお読みください。クラスとインターフェースの理解は非常に限られているように見えるので、デザインパターンに関する理論的な議論は意味をなさない。 –
私は、あなたがOOPとコントロールIOCの反転を読むことは有用であると思います。そして、インターフェイスの使い方を理解するのに最適なことは、いくつかのデザインパターンを学ぶことだと思います –