자바 디자인 모드 - 교체 기 모드

글 목록
배경
실현
총화
배경
교체 기 모델 은 용도 가 광범 위 하 다. 예 를 들 어 무기 창고 의 무 기 를 보 여 주 며 조종사 들 이 선택 할 수 있 도록 해 야 한다.
이루어지다
무기 류
public class Weapon {
    
    private String name;
    
    //   or  
    private String type;
    
    //   
    private String damage;
    
    //   
    private String count;
    
    public Weapon(String name, String type, String damage, String count) {
        super();
        this.name = name;
        this.type = type;
        this.damage = damage;
        this.count = count;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDamage() {
        return damage;
    }

    public void setDamage(String damage) {
        this.damage = damage;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return "Weapon [name=" + name + ", type=" + type + ", damage=" + damage + ", count=" + count + "]";
    }
    
}

교체 기 인터페이스
public interface Iterator {

    boolean hasNext();
    
    Object next();
    
}


무기 교체 기
public class WeaponIterator implements Iterator {
    
    private List<Weapon> weapons;
    
    public WeaponIterator(List<Weapon> weapons) {
        super();
        this.weapons = weapons;
    }
    
    private int position = 0;

    @Override
    public boolean hasNext() {
        if (null != weapons && position <= weapons.size() - 1) {
            return true;
        }
        return false;
    }

    @Override
    public Object next() {
        Weapon weapon = weapons.get(position);
        position++;
        return weapon;
    }

}

무기고
public class WeaponStore {
    
    private List<Weapon> weapons;

    public WeaponStore(List<Weapon> weapons) {
        super();
        this.weapons = weapons;
    }

    public WeaponStore() {
        super();
    }

    public List<Weapon> getWeapons() {
        return weapons;
    }

    public void setWeapons(List<Weapon> weapons) {
        this.weapons = weapons;
    }

    @Override
    public String toString() {
        return "WeaponStore [weapons=" + weapons + "]";
    }
    
    public Iterator getWeaponIterator() {
        return new WeaponIterator(weapons);
    }
}

테스트 클래스
public class Test {
    
    public static void main(String[] args) {
        WeaponStore weaponStore = new WeaponStore();
        List<Weapon> weapons = new ArrayList<>();
        weapons.add(new Weapon("    ", "  ", "4700", "1"));
        weapons.add(new Weapon("    ", "  ", "5000", "1"));
        weapons.add(new Weapon("     ", "  ", "4300", "2"));
        weapons.add(new Weapon("       ", "  ", "4700", "3"));
        
        weaponStore.setWeapons(weapons);
        
        Iterator iterator = weaponStore.getWeaponIterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
    
}

테스트 결과
Weapon [name=    , type=  , damage=4700, count=1]
Weapon [name=    , type=  , damage=5000, count=1]
Weapon [name=     , type=  , damage=4300, count=2]
Weapon [name=       , type=  , damage=4700, count=3]

총결산
교체 기 모드 는 할 말 이 없 으 니 집합 을 자주 교체 하 는 것 이 낯 설 지 않 을 것 이다.

좋은 웹페이지 즐겨찾기