Skip to content

Commit e3c46b5

Browse files
committed
Merge pull request #13 from DeyuGoGo/Iterator
add Iterator without README and test
2 parents ea050eb + a22389e commit e3c46b5

8 files changed

Lines changed: 151 additions & 0 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package iterator;
2+
3+
import decorate.Weapon;
4+
import util.JavaLog;
5+
6+
public class ArmsSales {
7+
8+
private WeaponStoreTW mStoreTW ;
9+
private WeaponStoreSW mStoreSW ;
10+
public ArmsSales(WeaponStoreTW storeTW , WeaponStoreSW storeSW){
11+
this.mStoreTW = storeTW ;
12+
this.mStoreSW = storeSW;
13+
}
14+
15+
public void FlySprayArms(){
16+
Iterator iterator = mStoreTW.createWeaponIterator();
17+
Iterator iterator2 = mStoreSW.createWeaponIterator();
18+
JavaLog.d("TW");
19+
FlySprayArms(iterator);
20+
JavaLog.d("SW");
21+
FlySprayArms(iterator2);
22+
}
23+
private void FlySprayArms(Iterator iterator){
24+
while(iterator.hasNext()){
25+
Weapon ooWeapon = (Weapon)iterator.next();
26+
JavaLog.d("·~°ÈªºªZ¾¹¼Q¥X°Õ" + ooWeapon.getHurtVerb());
27+
}
28+
}
29+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package iterator;
2+
3+
import java.util.ArrayList;
4+
5+
import decorate.Weapon;
6+
7+
public class ArrayListWeaponIterator implements Iterator{
8+
private int position = 0 ;
9+
private ArrayList<Weapon> mWeapons;
10+
public ArrayListWeaponIterator(ArrayList<Weapon> weapons){
11+
this.mWeapons = weapons;
12+
}
13+
@Override
14+
public boolean hasNext() {
15+
if(position >= mWeapons.size() || mWeapons.get(position) == null)return false;
16+
else return true;
17+
}
18+
19+
@Override
20+
public Object next() {
21+
Weapon weapon = mWeapons.get(position);
22+
position++;
23+
return weapon;
24+
}
25+
26+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package iterator;
2+
3+
import decorate.Weapon;
4+
5+
public class ArrayWeaponIterator implements Iterator{
6+
private int position = 0 ;
7+
private Weapon[] mWeapons;
8+
public ArrayWeaponIterator(Weapon[] weapons){
9+
this.mWeapons = weapons;
10+
}
11+
@Override
12+
public boolean hasNext() {
13+
if(position >= mWeapons.length || mWeapons[position] == null)return false;
14+
else return true;
15+
}
16+
17+
@Override
18+
public Object next() {
19+
Weapon weapon = mWeapons[position];
20+
position++;
21+
return weapon;
22+
}
23+
24+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package iterator;
2+
3+
4+
public class Go {
5+
public static void main(String[] args) {
6+
WeaponStoreSW mStoreSW = new WeaponStoreSW();
7+
WeaponStoreTW mStoreTW = new WeaponStoreTW();
8+
ArmsSales sales = new ArmsSales(mStoreTW, mStoreSW);
9+
sales.FlySprayArms();
10+
}
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package iterator;
2+
3+
public interface Iterator {
4+
boolean hasNext();
5+
Object next();
6+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package iterator;
2+
3+
public interface WeaponStore {
4+
public Iterator createWeaponIterator();
5+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package iterator;
2+
3+
import java.util.ArrayList;
4+
5+
import decorate.Sword;
6+
import decorate.Weapon;
7+
8+
public class WeaponStoreSW implements WeaponStore{
9+
10+
private ArrayList<Weapon> mWeapons ;
11+
public WeaponStoreSW(){
12+
mWeapons = new ArrayList<Weapon>();
13+
addWeapon(new Sword());
14+
addWeapon(new Sword());
15+
addWeapon(new Sword());
16+
}
17+
@Override
18+
public Iterator createWeaponIterator() {
19+
return new ArrayListWeaponIterator(mWeapons);
20+
}
21+
public void addWeapon(Weapon weapon){
22+
mWeapons.add(weapon);
23+
}
24+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package iterator;
2+
3+
import decorate.Arrow;
4+
import decorate.Weapon;
5+
6+
public class WeaponStoreTW implements WeaponStore{
7+
8+
private static final int MAX = 5;
9+
private Weapon[] mWeapons ;
10+
private int amount = 0;
11+
public WeaponStoreTW(){
12+
mWeapons = new Weapon[MAX];
13+
addWeapon(new Arrow());
14+
addWeapon(new Arrow());
15+
addWeapon(new Arrow());
16+
}
17+
@Override
18+
public Iterator createWeaponIterator() {
19+
return new ArrayWeaponIterator(mWeapons);
20+
}
21+
public void addWeapon(Weapon weapon){
22+
if(amount>=MAX) throw new IndexOutOfBoundsException("WeaponStoreTW in max weapons can't add weapon");
23+
mWeapons[amount] = weapon;
24+
amount++;
25+
}
26+
}

0 commit comments

Comments
 (0)