java的抽象类使用

场景: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.

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/85804092