场景:java的抽象类使用
1.顶层抽象类AbstractCommon
public abstract class AbstractCommon {
private List<String> workList;
public void setWorkList(List<String> workList) {
this.workList = workList;
}
public abstract List<Object> getAllObject();
public abstract void outputAllObject(final List<Object> list);
public List<String> getWorkList() {
return workList;
}
public void doWork(){
List<Object> infoList = new ArrayList();
List<Object> objList = getAllObject();
infoList.addAll(objList);
outputAllObject(infoList);
}
}
2.实现类CityInfo
public class CityInfo extends AbstractCommon{
private static Logger logger = LoggerFactory.getLogger(CityInfo.class);
public CityInfo(){}
public CityInfo(List<String> workList){
this.setWorkList(workList);
}
@Override
public List<Object> getAllObject() {
List<Object> list = new ArrayList();
CityModel cityModel = new CityModel();
cityModel.setCityName("厦门");
cityModel.setLandArea(1699.39);
cityModel.setPopulation(401);
cityModel.setGross(4351.18);
cityModel.setAreaNumber("350200");
cityModel.setPostalCode("361000");
cityModel.setTelephoneCode("0592");
cityModel.setCarCode("闽D");
cityModel.setCityDescribe("适合居住的城市.");
CityModel cityModel1 = new CityModel();
cityModel1.setCityName("福州");
cityModel1.setLandArea(11968);
cityModel1.setPopulation(766);
cityModel1.setGross(7104.02);
cityModel1.setAreaNumber("350100");
cityModel1.setPostalCode("350000");
cityModel1.setTelephoneCode("0591");
cityModel1.setCarCode("闽A");
cityModel1.setCityDescribe("省会城市.");
list.add(cityModel);
list.add(cityModel1);
return list;
}
@Override
public void outputAllObject(List<Object> list) {
logger.info("输出城市信息:");
for(int i=0;i<list.size();i++){
CityModel cityModel = (CityModel) list.get(i);
logger.info(cityModel.toString());
}
}
}
3.实现类GirlInfo
public class GirlInfo extends AbstractCommon{
private static Logger logger = LoggerFactory.getLogger(GirlInfo.class);
public GirlInfo(){}
public GirlInfo(List<String> workList){
this.setWorkList(workList);
}
@Override
public List<Object> getAllObject() {
List<Object> list = new ArrayList();
GirlModel girlModel = new GirlModel();
girlModel.setGirlId(123);
girlModel.setGirlName("张一");
girlModel.setAge(19);
girlModel.setHeight(170);
girlModel.setAppearance("漂亮");
girlModel.setCharacter("善良");
girlModel.setCupSize("F");
girlModel.setEducation("本科");
girlModel.setMarriage("未婚");
list.add(girlModel);
return list;
}
@Override
public void outputAllObject(List<Object> list) {
logger.info("输出女孩信息:");
for(int i=0;i<list.size();i++){
GirlModel girlModel = (GirlModel) list.get(i);
logger.info(girlModel.toString());
}
}
}
4.代理类ProxyWork
public class ProxyWork extends AbstractCommon {
private static Logger logger = LoggerFactory.getLogger(ProxyWork.class);
public ProxyWork(){};
AbstractCommon abstractCommon;
public ProxyWork(AbstractCommon abs){
this.abstractCommon = abs;
}
@Override
public List<Object> getAllObject() {
logger.info("ProxyWork开始创建对象");
List<Object> list = abstractCommon.getAllObject();
logger.info("ProxyWork对象数目:"+ list.size());
return list;
}
@Override
public void outputAllObject(List<Object> list) {
logger.info("ProxyWork开始输出");
abstractCommon.outputAllObject(list);
logger.info("ProxyWork输出结束: " + list.size());
}
}
5.执行类DoWork
public class DoWork {
private List<String> workList;
public DoWork(){}
public DoWork(List<String> workList){
this.workList = workList;
}
public void work() {
AbstractCommon abstractCommon = null;
for (String item : this.workList) {
if ("CityModel".equals(item)) {
abstractCommon = new CityInfo();
} else if ("GirlModel".equals(item)) {
abstractCommon = new GirlInfo();
}
output(abstractCommon);
}
}
public void output(AbstractCommon com){
if(com !=null){
ProxyWork proxy = new ProxyWork(com);
proxy.doWork();
}
}
}
6.测试main函数类 TestAbstracts
public class TestAbstracts {
public static List<String> getWorkItem(){
List<String> list = new ArrayList<String>();
list.add("CityModel");
list.add("GirlModel");
return list;
}
public static void main(String [] args){
List<String> workList = getWorkItem() ;
DoWork dowork = new DoWork(workList);
dowork.work();
}
}
7.实体类 CityModel
public class CityModel implements Serializable {
private static final long serialVersionUID = 4443714978780088961L;
/** 城市名称 */
String cityName;
/**城市面积*/
double landArea;
/**人口*/
long population;
/**生产总值*/
double gross ;
/** 行政区划代码 */
String areaNumber;
/** 邮政编码 */
String postalCode;
/** 电话区号 */
String telephoneCode;
/**车牌代码*/
String carCode;
/** 城市描述 */
String cityDescribe;
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public double getLandArea() {
return landArea;
}
public void setLandArea(double landArea) {
this.landArea = landArea;
}
public long getPopulation() {
return population;
}
public void setPopulation(long population) {
this.population = population;
}
public double getGross() {
return gross;
}
public void setGross(double gross) {
this.gross = gross;
}
public String getAreaNumber() {
return areaNumber;
}
public void setAreaNumber(String areaNumber) {
this.areaNumber = areaNumber;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
public String getTelephoneCode() {
return telephoneCode;
}
public void setTelephoneCode(String telephoneCode) {
this.telephoneCode = telephoneCode;
}
public String getCarCode() {
return carCode;
}
public void setCarCode(String carCode) {
this.carCode = carCode;
}
public String getCityDescribe() {
return cityDescribe;
}
public void setCityDescribe(String cityDescribe) {
this.cityDescribe = cityDescribe;
}
@Override
public String toString() {
return "CityModel [cityName=" + cityName
+",landArea=" + landArea
+",population=" + population
+",gross=" + gross
+",areaNumber=" + areaNumber
+",postalCode=" + postalCode
+",telephoneCode=" + telephoneCode
+",carCode=" + carCode
+",cityDescribe=" + cityDescribe
+"]";
}
}
8.实体类 GirlModel
public class GirlModel implements Serializable{
private static final long serialVersionUID = -5779395196765730602L;
/**ID号*/
long girlId;
/**姓名*/
String girlName;
/**年龄*/
long age;
/**身高*/
double height;
/**外貌*/
String appearance;
/**性格*/
String character;
/**罩杯*/
String cupSize;
/**学历*/
String education;
/**婚姻*/
String marriage;
/**所在城市*/
String city;
public long getGirlId() {
return girlId;
}
public void setGirlId(long girlId) {
this.girlId = girlId;
}
public String getGirlName() {
return girlName;
}
public void setGirlName(String girlName) {
this.girlName = girlName;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getAppearance() {
return appearance;
}
public void setAppearance(String appearance) {
this.appearance = appearance;
}
public String getCharacter() {
return character;
}
public void setCharacter(String character) {
this.character = character;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
public String getMarriage() {
return marriage;
}
public void setMarriage(String marriage) {
this.marriage = marriage;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "GirlModel [girlId=" + girlId
+",girlName=" + girlName
+",age=" + age
+",height=" + height
+",appearance=" + appearance
+",character=" + character
+",cupSize=" + cupSize
+",education=" + education
+",marriage=" + marriage
+"]";
}
}
以上,TKS.