From 87d740713692627f53a9ae1cc2a827bd28007962 Mon Sep 17 00:00:00 2001 From: zw6666 <2714709357@qq.com> Date: Tue, 30 Oct 2018 21:30:06 +0800 Subject: [PATCH 1/2] Merge branch 'master' into deal --- src/Main.java | 11 ++++ src/buy/BuyLivestock.java | 2 +- src/buy/{BuySeed.java => BuySeedOrFeed.java} | 3 +- src/buy/BuySheep.java | 28 ++++++++++ src/buy/ResList.java | 13 +++-- src/livestock/Chook.java | 7 ++- src/livestock/Cow.java | 2 +- src/livestock/Livestock.java | 13 +++-- src/livestock/Ox.java | 1 + src/prototype_visitor/acceptor.java | 5 ++ src/prototype_visitor/listvisitor.java | 17 ++++++ src/prototype_visitor/rainy.java | 55 ++++++++++++++++++++ src/prototype_visitor/run.java | 25 +++++++++ src/prototype_visitor/sunny.java | 47 +++++++++++++++++ src/prototype_visitor/visitor.java | 5 ++ src/prototype_visitor/weather.java | 5 ++ src/prototype_visitor/windy.java | 54 +++++++++++++++++++ src/prototype_visitor/wstate.java | 39 ++++++++++++++ src/thing/LivestockState.java | 3 +- 19 files changed, 320 insertions(+), 15 deletions(-) rename src/buy/{BuySeed.java => BuySeedOrFeed.java} (67%) create mode 100644 src/buy/BuySheep.java create mode 100644 src/prototype_visitor/acceptor.java create mode 100644 src/prototype_visitor/listvisitor.java create mode 100644 src/prototype_visitor/rainy.java create mode 100644 src/prototype_visitor/run.java create mode 100644 src/prototype_visitor/sunny.java create mode 100644 src/prototype_visitor/visitor.java create mode 100644 src/prototype_visitor/weather.java create mode 100644 src/prototype_visitor/windy.java create mode 100644 src/prototype_visitor/wstate.java diff --git a/src/Main.java b/src/Main.java index 671bb51..70316b8 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,9 +1,20 @@ +import java.util.Vector; +import buy.*; +import livestock.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub + //示例买5头猪 + Vector fivePigs=new BuyPig().start(5); + for(int i=0;i<5;i++) + { + System.out.print(fivePigs.get(i).getId()); + } + //示例买5个种子 + new BuySeedOrFeed().addToList(0, 6); } } diff --git a/src/buy/BuyLivestock.java b/src/buy/BuyLivestock.java index f587ea5..6de2f1b 100644 --- a/src/buy/BuyLivestock.java +++ b/src/buy/BuyLivestock.java @@ -4,7 +4,7 @@ public abstract class BuyLivestock extends Buy{ ResList reslist = ResList.Instance(); - public Vector llist = null; + public Vector llist = new Vector(); public void addToList(int type, int num){//添加新增牲畜至列表 reslist.l_list.get(type).addAll(llist); diff --git a/src/buy/BuySeed.java b/src/buy/BuySeedOrFeed.java similarity index 67% rename from src/buy/BuySeed.java rename to src/buy/BuySeedOrFeed.java index a2b478d..e53538a 100644 --- a/src/buy/BuySeed.java +++ b/src/buy/BuySeedOrFeed.java @@ -1,10 +1,9 @@ package buy; -public class BuySeed extends Buy { +public class BuySeedOrFeed extends Buy { @Override public void addToList(int type, int num) { - // TODO Auto-generated method stub ResList reslist = ResList.Instance(); reslist.s_list[type] += num; } diff --git a/src/buy/BuySheep.java b/src/buy/BuySheep.java new file mode 100644 index 0000000..608e330 --- /dev/null +++ b/src/buy/BuySheep.java @@ -0,0 +1,28 @@ +package buy; +import livestock.*; +import java.util.Vector; + +import buy.ResList.l_type; + +public class BuySheep extends BuyLivestock{ + private int type = l_type.sheep.id();//指明该类type对应的枚举量 + + @Override + public Livestock create(int id) { + Livestock sheep = new Sheep(id); + return sheep; + } + + @Override + public Vector start(int num){ + // + int id1 = reslist.l_list.get(type).size(); + for(int i = 0; i < num; i++){ + llist.addElement(create(id1)); + id1++; + } + addToList(type, num); + return llist; + } + +} \ No newline at end of file diff --git a/src/buy/ResList.java b/src/buy/ResList.java index 10e56df..cf1d831 100644 --- a/src/buy/ResList.java +++ b/src/buy/ResList.java @@ -14,7 +14,7 @@ public int id(){ } };//牲畜类型 public enum s_type{ - CabbageSeed(0),CarrotSeed(1),AppleSeed(2),PearSeed(3); + CabbageSeed(0),CarrotSeed(1),AppleSeed(2),PearSeed(3),feed(4); private int type; private s_type(int i){ this.type = i; @@ -22,13 +22,18 @@ private s_type(int i){ public int id(){ return type; } - };//种子或幼苗类型 + };//种子幼苗类型或饲料 public Vector> l_list = new Vector>(10);//存储不同牲畜个体 - public int[] s_list = new int[10];//存储不同种子或幼苗数量 + public int[] s_list = new int[10];//存储不同种子幼苗或饲料数量 public int money; private final static ResList r = new ResList();//Singleton 单例模式 - private ResList(){}; + private ResList(){ + for(int i = 0; i < 6; i++){ + Vector l = new Vector(); + l_list.addElement(l); + } + }; public static ResList Instance(){ return r; } diff --git a/src/livestock/Chook.java b/src/livestock/Chook.java index 25c2165..67049c2 100644 --- a/src/livestock/Chook.java +++ b/src/livestock/Chook.java @@ -4,8 +4,9 @@ import thing.Carrier; import thing.Product; import thing.ProductType; - +//继承Livestock类 public class Chook extends Livestock{ + //构造函数 public Chook (int id) { super(id,species.chook,species.chook.getPrice()); @@ -16,16 +17,20 @@ public void getProduct() { newCarrier.carryToWareHouse(); } + //收鸡蛋 public boolean getEgg() { + //鸡已下蛋 if(nowstate.getState()==1) { System.out.println("获得鸡蛋"); //获得鸡蛋 + //重置鸡的状态 nowstate.setFeedTime(); nowstate.setDrinkTime(); return true; } + //鸡未下蛋 else { System.out.println("没有鸡蛋"); return false; diff --git a/src/livestock/Cow.java b/src/livestock/Cow.java index e851f5e..0581834 100644 --- a/src/livestock/Cow.java +++ b/src/livestock/Cow.java @@ -17,7 +17,7 @@ public void getProduct() { Carrier newCarrier=new Carrier(new Product(ProductType.MILK,9)); newCarrier.carryToWareHouse(); } - + //挤奶 public boolean getMilk() { if(nowstate.getState() == 1 ) diff --git a/src/livestock/Livestock.java b/src/livestock/Livestock.java index fa24b31..a330c65 100644 --- a/src/livestock/Livestock.java +++ b/src/livestock/Livestock.java @@ -5,6 +5,7 @@ public abstract class Livestock { protected LivestockState nowstate; private int id; + //种类枚举,包含价格 public enum species{ ox(1000),sheep(500),chook(5),cow(20),pig(300); private float price; @@ -15,11 +16,13 @@ float getPrice() { return price; } }; - + //枚举变量 private species spe; - private int lingDays; - private float weight; + + //private int lingDays; + //private float weight; //private int place; + //构造函数 public Livestock(int id,species s,float price) { this.id=id; @@ -38,10 +41,10 @@ public int getId() { return weight; }*/ - public int getLingDays() + /*public int getLingDays() { return lingDays; - } + }*/ } diff --git a/src/livestock/Ox.java b/src/livestock/Ox.java index db7b328..69e3afa 100644 --- a/src/livestock/Ox.java +++ b/src/livestock/Ox.java @@ -18,6 +18,7 @@ public void getProduct() { newCarrier.carryToWareHouse(); } + //屠宰 public boolean slaughter() { if(nowstate.getState() == 1 ) diff --git a/src/prototype_visitor/acceptor.java b/src/prototype_visitor/acceptor.java new file mode 100644 index 0000000..46f7d3b --- /dev/null +++ b/src/prototype_visitor/acceptor.java @@ -0,0 +1,5 @@ +package prototype_visitor; + +public interface acceptor { +public abstract void accept(visitor v); +} diff --git a/src/prototype_visitor/listvisitor.java b/src/prototype_visitor/listvisitor.java new file mode 100644 index 0000000..3051368 --- /dev/null +++ b/src/prototype_visitor/listvisitor.java @@ -0,0 +1,17 @@ +package prototype_visitor; +import java.util.Iterator; +public class listvisitor extends visitor { + + @Override + public void visit(wstate state) { + // TODO Auto-generated method stub + System.out.println(state.getName()); + Iterator it=state.iterator(); + while(it.hasNext()) + { + wstate s=(wstate)it.next(); + System.out.println(s.getName()); + } + } + +} diff --git a/src/prototype_visitor/rainy.java b/src/prototype_visitor/rainy.java new file mode 100644 index 0000000..3781c61 --- /dev/null +++ b/src/prototype_visitor/rainy.java @@ -0,0 +1,55 @@ +package prototype_visitor; + +public class rainy extends wstate{ + private int _id; + private static int _count=1; + private static rainy _freestate; + public rainy() {addPrototype(this);wstate.array.add(this);}; + + protected rainy(int i) { + // TODO Auto-generated constructor stub + _id=_count++; + } + + @Override + protected weather returnType() { + // TODO Auto-generated method stub + return weather.rainy; + } + + //protected void finalize() {_count--;}; + + @Override + public wstate copy() { + // TODO Auto-generated method stub + rainy s=new rainy(1); + wstate.array.add(s); + return s; + } + + @Override + public void work() { + // TODO Auto-generated method stub + System.out.println("Weather::rainy"+_id); + } + + @Override + public void accept(visitor v) { + // TODO Auto-generated method stub + v.visit(this); + } + + @Override + public String getName() { + // TODO Auto-generated method stub + String name="Weather::rainy"+_id; + return name; + } + + @Override + public int getNumber() { + // TODO Auto-generated method stub + return _count; + } + +} diff --git a/src/prototype_visitor/run.java b/src/prototype_visitor/run.java new file mode 100644 index 0000000..a3fb0b1 --- /dev/null +++ b/src/prototype_visitor/run.java @@ -0,0 +1,25 @@ +package prototype_visitor; + +import java.util.ArrayList; +public class run { +public static void main(String[]args) +{ + ArrayListinput=new ArrayList(); + input.add(weather.sunny); + input.add(weather.rainy); + input.add(weather.windy); + input.add(weather.sunny); + input.add(weather.rainy); + input.add(weather.windy); + input.add(weather.windy); + input.add(weather.sunny); + input.add(weather.rainy); + int num_states=input.size(); + wstate[]state=new wstate[num_states]; + for(int i=0;iarray=new Vector(); + protected abstract weather returnType(); + protected static void addPrototype(wstate state) + { + _states[_nextslot++]=state; + } + protected abstract wstate copy(); + public static wstate findandclone(weather s) + { + for(int i=0;i<_nextslot;i++) + if(_states[i].returnType()==s) + return _states[i].copy(); + if(s==weather.sunny) + return new sunny(); + else if(s==weather.rainy) + return new rainy(); + else + return new windy(); + } + public abstract void work(); + public abstract String getName();//取得名称 + public abstract int getNumber();//取得数量 + public void accept(visitor v) + { + v.visit(this); + } + public Iterator iterator() + { + return array.iterator(); + } +} diff --git a/src/thing/LivestockState.java b/src/thing/LivestockState.java index 4e2eac2..c19593a 100644 --- a/src/thing/LivestockState.java +++ b/src/thing/LivestockState.java @@ -1,7 +1,7 @@ package thing; import livestock.Livestock; - +import buy.ReList; public class LivestockState { private int DrinkTime=0; @@ -41,6 +41,7 @@ public void Drink() { } //喂食 public void Feed() { + ReList.Instance().s_list[ReList.Instance().s_type.feed.id()]--; this.FeedTime++; if(this.getState()==0&&this.DrinkTime>=3&&this.FeedTime>=3) { From 65ea38bc0e22daa15c5362931ddaff5e405bbb72 Mon Sep 17 00:00:00 2001 From: zw6666 <2714709357@qq.com> Date: Tue, 30 Oct 2018 21:30:12 +0800 Subject: [PATCH 2/2] Revert "Merge branch 'master' into deal" This reverts commit 87d740713692627f53a9ae1cc2a827bd28007962. --- src/Main.java | 11 ---- src/buy/BuyLivestock.java | 2 +- src/buy/{BuySeedOrFeed.java => BuySeed.java} | 3 +- src/buy/BuySheep.java | 28 ---------- src/buy/ResList.java | 13 ++--- src/livestock/Chook.java | 7 +-- src/livestock/Cow.java | 2 +- src/livestock/Livestock.java | 13 ++--- src/livestock/Ox.java | 1 - src/prototype_visitor/acceptor.java | 5 -- src/prototype_visitor/listvisitor.java | 17 ------ src/prototype_visitor/rainy.java | 55 -------------------- src/prototype_visitor/run.java | 25 --------- src/prototype_visitor/sunny.java | 47 ----------------- src/prototype_visitor/visitor.java | 5 -- src/prototype_visitor/weather.java | 5 -- src/prototype_visitor/windy.java | 54 ------------------- src/prototype_visitor/wstate.java | 39 -------------- src/thing/LivestockState.java | 3 +- 19 files changed, 15 insertions(+), 320 deletions(-) rename src/buy/{BuySeedOrFeed.java => BuySeed.java} (67%) delete mode 100644 src/buy/BuySheep.java delete mode 100644 src/prototype_visitor/acceptor.java delete mode 100644 src/prototype_visitor/listvisitor.java delete mode 100644 src/prototype_visitor/rainy.java delete mode 100644 src/prototype_visitor/run.java delete mode 100644 src/prototype_visitor/sunny.java delete mode 100644 src/prototype_visitor/visitor.java delete mode 100644 src/prototype_visitor/weather.java delete mode 100644 src/prototype_visitor/windy.java delete mode 100644 src/prototype_visitor/wstate.java diff --git a/src/Main.java b/src/Main.java index 70316b8..671bb51 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,20 +1,9 @@ -import java.util.Vector; -import buy.*; -import livestock.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub - //示例买5头猪 - Vector fivePigs=new BuyPig().start(5); - for(int i=0;i<5;i++) - { - System.out.print(fivePigs.get(i).getId()); - } - //示例买5个种子 - new BuySeedOrFeed().addToList(0, 6); } } diff --git a/src/buy/BuyLivestock.java b/src/buy/BuyLivestock.java index 6de2f1b..f587ea5 100644 --- a/src/buy/BuyLivestock.java +++ b/src/buy/BuyLivestock.java @@ -4,7 +4,7 @@ public abstract class BuyLivestock extends Buy{ ResList reslist = ResList.Instance(); - public Vector llist = new Vector(); + public Vector llist = null; public void addToList(int type, int num){//添加新增牲畜至列表 reslist.l_list.get(type).addAll(llist); diff --git a/src/buy/BuySeedOrFeed.java b/src/buy/BuySeed.java similarity index 67% rename from src/buy/BuySeedOrFeed.java rename to src/buy/BuySeed.java index e53538a..a2b478d 100644 --- a/src/buy/BuySeedOrFeed.java +++ b/src/buy/BuySeed.java @@ -1,9 +1,10 @@ package buy; -public class BuySeedOrFeed extends Buy { +public class BuySeed extends Buy { @Override public void addToList(int type, int num) { + // TODO Auto-generated method stub ResList reslist = ResList.Instance(); reslist.s_list[type] += num; } diff --git a/src/buy/BuySheep.java b/src/buy/BuySheep.java deleted file mode 100644 index 608e330..0000000 --- a/src/buy/BuySheep.java +++ /dev/null @@ -1,28 +0,0 @@ -package buy; -import livestock.*; -import java.util.Vector; - -import buy.ResList.l_type; - -public class BuySheep extends BuyLivestock{ - private int type = l_type.sheep.id();//指明该类type对应的枚举量 - - @Override - public Livestock create(int id) { - Livestock sheep = new Sheep(id); - return sheep; - } - - @Override - public Vector start(int num){ - // - int id1 = reslist.l_list.get(type).size(); - for(int i = 0; i < num; i++){ - llist.addElement(create(id1)); - id1++; - } - addToList(type, num); - return llist; - } - -} \ No newline at end of file diff --git a/src/buy/ResList.java b/src/buy/ResList.java index cf1d831..10e56df 100644 --- a/src/buy/ResList.java +++ b/src/buy/ResList.java @@ -14,7 +14,7 @@ public int id(){ } };//牲畜类型 public enum s_type{ - CabbageSeed(0),CarrotSeed(1),AppleSeed(2),PearSeed(3),feed(4); + CabbageSeed(0),CarrotSeed(1),AppleSeed(2),PearSeed(3); private int type; private s_type(int i){ this.type = i; @@ -22,18 +22,13 @@ private s_type(int i){ public int id(){ return type; } - };//种子幼苗类型或饲料 + };//种子或幼苗类型 public Vector> l_list = new Vector>(10);//存储不同牲畜个体 - public int[] s_list = new int[10];//存储不同种子幼苗或饲料数量 + public int[] s_list = new int[10];//存储不同种子或幼苗数量 public int money; private final static ResList r = new ResList();//Singleton 单例模式 - private ResList(){ - for(int i = 0; i < 6; i++){ - Vector l = new Vector(); - l_list.addElement(l); - } - }; + private ResList(){}; public static ResList Instance(){ return r; } diff --git a/src/livestock/Chook.java b/src/livestock/Chook.java index 67049c2..25c2165 100644 --- a/src/livestock/Chook.java +++ b/src/livestock/Chook.java @@ -4,9 +4,8 @@ import thing.Carrier; import thing.Product; import thing.ProductType; -//继承Livestock类 + public class Chook extends Livestock{ - //构造函数 public Chook (int id) { super(id,species.chook,species.chook.getPrice()); @@ -17,20 +16,16 @@ public void getProduct() { newCarrier.carryToWareHouse(); } - //收鸡蛋 public boolean getEgg() { - //鸡已下蛋 if(nowstate.getState()==1) { System.out.println("获得鸡蛋"); //获得鸡蛋 - //重置鸡的状态 nowstate.setFeedTime(); nowstate.setDrinkTime(); return true; } - //鸡未下蛋 else { System.out.println("没有鸡蛋"); return false; diff --git a/src/livestock/Cow.java b/src/livestock/Cow.java index 0581834..e851f5e 100644 --- a/src/livestock/Cow.java +++ b/src/livestock/Cow.java @@ -17,7 +17,7 @@ public void getProduct() { Carrier newCarrier=new Carrier(new Product(ProductType.MILK,9)); newCarrier.carryToWareHouse(); } - //挤奶 + public boolean getMilk() { if(nowstate.getState() == 1 ) diff --git a/src/livestock/Livestock.java b/src/livestock/Livestock.java index a330c65..fa24b31 100644 --- a/src/livestock/Livestock.java +++ b/src/livestock/Livestock.java @@ -5,7 +5,6 @@ public abstract class Livestock { protected LivestockState nowstate; private int id; - //种类枚举,包含价格 public enum species{ ox(1000),sheep(500),chook(5),cow(20),pig(300); private float price; @@ -16,13 +15,11 @@ float getPrice() { return price; } }; - //枚举变量 + private species spe; - - //private int lingDays; - //private float weight; + private int lingDays; + private float weight; //private int place; - //构造函数 public Livestock(int id,species s,float price) { this.id=id; @@ -41,10 +38,10 @@ public int getId() { return weight; }*/ - /*public int getLingDays() + public int getLingDays() { return lingDays; - }*/ + } } diff --git a/src/livestock/Ox.java b/src/livestock/Ox.java index 69e3afa..db7b328 100644 --- a/src/livestock/Ox.java +++ b/src/livestock/Ox.java @@ -18,7 +18,6 @@ public void getProduct() { newCarrier.carryToWareHouse(); } - //屠宰 public boolean slaughter() { if(nowstate.getState() == 1 ) diff --git a/src/prototype_visitor/acceptor.java b/src/prototype_visitor/acceptor.java deleted file mode 100644 index 46f7d3b..0000000 --- a/src/prototype_visitor/acceptor.java +++ /dev/null @@ -1,5 +0,0 @@ -package prototype_visitor; - -public interface acceptor { -public abstract void accept(visitor v); -} diff --git a/src/prototype_visitor/listvisitor.java b/src/prototype_visitor/listvisitor.java deleted file mode 100644 index 3051368..0000000 --- a/src/prototype_visitor/listvisitor.java +++ /dev/null @@ -1,17 +0,0 @@ -package prototype_visitor; -import java.util.Iterator; -public class listvisitor extends visitor { - - @Override - public void visit(wstate state) { - // TODO Auto-generated method stub - System.out.println(state.getName()); - Iterator it=state.iterator(); - while(it.hasNext()) - { - wstate s=(wstate)it.next(); - System.out.println(s.getName()); - } - } - -} diff --git a/src/prototype_visitor/rainy.java b/src/prototype_visitor/rainy.java deleted file mode 100644 index 3781c61..0000000 --- a/src/prototype_visitor/rainy.java +++ /dev/null @@ -1,55 +0,0 @@ -package prototype_visitor; - -public class rainy extends wstate{ - private int _id; - private static int _count=1; - private static rainy _freestate; - public rainy() {addPrototype(this);wstate.array.add(this);}; - - protected rainy(int i) { - // TODO Auto-generated constructor stub - _id=_count++; - } - - @Override - protected weather returnType() { - // TODO Auto-generated method stub - return weather.rainy; - } - - //protected void finalize() {_count--;}; - - @Override - public wstate copy() { - // TODO Auto-generated method stub - rainy s=new rainy(1); - wstate.array.add(s); - return s; - } - - @Override - public void work() { - // TODO Auto-generated method stub - System.out.println("Weather::rainy"+_id); - } - - @Override - public void accept(visitor v) { - // TODO Auto-generated method stub - v.visit(this); - } - - @Override - public String getName() { - // TODO Auto-generated method stub - String name="Weather::rainy"+_id; - return name; - } - - @Override - public int getNumber() { - // TODO Auto-generated method stub - return _count; - } - -} diff --git a/src/prototype_visitor/run.java b/src/prototype_visitor/run.java deleted file mode 100644 index a3fb0b1..0000000 --- a/src/prototype_visitor/run.java +++ /dev/null @@ -1,25 +0,0 @@ -package prototype_visitor; - -import java.util.ArrayList; -public class run { -public static void main(String[]args) -{ - ArrayListinput=new ArrayList(); - input.add(weather.sunny); - input.add(weather.rainy); - input.add(weather.windy); - input.add(weather.sunny); - input.add(weather.rainy); - input.add(weather.windy); - input.add(weather.windy); - input.add(weather.sunny); - input.add(weather.rainy); - int num_states=input.size(); - wstate[]state=new wstate[num_states]; - for(int i=0;iarray=new Vector(); - protected abstract weather returnType(); - protected static void addPrototype(wstate state) - { - _states[_nextslot++]=state; - } - protected abstract wstate copy(); - public static wstate findandclone(weather s) - { - for(int i=0;i<_nextslot;i++) - if(_states[i].returnType()==s) - return _states[i].copy(); - if(s==weather.sunny) - return new sunny(); - else if(s==weather.rainy) - return new rainy(); - else - return new windy(); - } - public abstract void work(); - public abstract String getName();//取得名称 - public abstract int getNumber();//取得数量 - public void accept(visitor v) - { - v.visit(this); - } - public Iterator iterator() - { - return array.iterator(); - } -} diff --git a/src/thing/LivestockState.java b/src/thing/LivestockState.java index c19593a..4e2eac2 100644 --- a/src/thing/LivestockState.java +++ b/src/thing/LivestockState.java @@ -1,7 +1,7 @@ package thing; import livestock.Livestock; -import buy.ReList; + public class LivestockState { private int DrinkTime=0; @@ -41,7 +41,6 @@ public void Drink() { } //喂食 public void Feed() { - ReList.Instance().s_list[ReList.Instance().s_type.feed.id()]--; this.FeedTime++; if(this.getState()==0&&this.DrinkTime>=3&&this.FeedTime>=3) {