工場モードと一例モード


昨日の夜、工場モードの練習をしました.XML配置によって、工場で発生する具体的な種類を工場に伝えました.そうすると、もっと多くの種類のインターフェースが実現される時、XML配置を修正してもいいです.コードの修正の手間が省けます.
寝る時に考えてみたら、工場の種類を一つの例として使うことができます.そのほうが効果的です.私は一例では普通三つのステップがあると思います.具体的にはコードの中に詳しく説明があります.
コードを貼り付けてください.改善できるところがあれば、みんなで意見を発表して、一緒に向上します.
carインターフェース
package myFactoryDemo;

public interface car {

	void run();

	void stop();
}
 
small car類
package myFactoryDemo;


public class smallcar implements car {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("smallcar is running ");

	}

	@Override
	public void stop() {
		System.out.println("smallcar is stopped ");

	}

}
 
ビッグcar類
package myFactoryDemo;


public class bigcar implements car {

	@Override
	public void run() {
		// TODO Auto-generated method stub

		System.out.println("bigcar is running ");
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("bigcar is stopped ");

	}

}
 carインターフェースを実現したクラスをすべてXMLを作成し、XMLファイルに入れます.
package myFactoryDemo;


import java.io.* ;
import java.util.* ;
public class beforeFactory
{
	public static void main(String args[]) throws Exception
	{
		Properties p = new Properties() ;
		
		p.setProperty("s","myFactoryDemo.smallcar") ;
		p.setProperty("b","myFactoryDemo.bigcar") ;
		p.storeToXML(new FileOutputStream("zhw.xml"),"fhqxawfnh") ;
		p.loadFromXML(new FileInputStream("zhw.xml")) ;
		System.out.println(p) ;
	}
};
 
テストマスタークラス
package myFactoryDemo;

import java.util.Properties;


public class myFactory {
	public static void main(String args[]) {
		Properties p = new Properties();
		p = InitXML.getInstance().getPropertiesInit();
		System.out.println(p);

		//                
		System.out.print("          :");
		String code = new InputData().getString();
		car f = Factory.getInstance().getFruitInstance(p.getProperty(code));
		if (f != null) {
			f.run();
			f.stop();
		} else {
			System.out.println("        。");
		}
	}

}
 テストの主な種類はいくつかのツール類を使って、以下で出して、もう一つ一つ紹介しません.
package myFactoryDemo;

import java.io.FileInputStream;
import java.util.Properties;

public class InitXML {
	//                    
	private InitXML(){}
	//                           
	private static InitXML initxml = new InitXML();

	public Properties getPropertiesInit() {
		Properties p = new Properties();
		try {
			p.loadFromXML(new FileInputStream("zhw.xml"));
		} catch (Exception e) {
		}
		return p;
	}
//                          
	public static InitXML getInstance() {
		return initxml;
	}

}
 
package myFactoryDemo;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class InputData {
	BufferedReader buf = null;

	public InputData() {
		buf = new BufferedReader(new InputStreamReader(System.in));
	}

	public String getString() {
		String str = null;
		try {
			str = buf.readLine();
		} catch (Exception e) {
		}
		return str;
	}

}
 
 
 
package myFactoryDemo;


public class Factory {
	
	private static Factory carfactory = new Factory();
	
	private Factory(){}
	
	public static Factory getInstance(){
		
		return carfactory;
		
	}
	public car getFruitInstance(String type) {
		car f = null;
		//   Class   
		try {
			f = (car) Class.forName(type).newInstance();
		} catch (Exception e) {
			System.out.println(e);
		}
		return f;
	}

}