JAVAサンプル8)オブジェクト向け---オブジェクト向けの設計パターン、ゴミ回収

9985 ワード

8.3オブジェクト向け設計モード
インスタンス156 Singleton単一モード
public class TestClass {							//         
	public static void main(String[] args) {
		Singleton object1 = Singleton.getSingleton(); 	//         
		Singleton object2 = Singleton.getSingleton(); 	//         
		System.out.println(" Singleton            :");
		System.out.println("  next()   :");
		System.out.println("object1.amount=" + object1.getAmount());
		System.out.println("object2.amount=" + object2.getAmount());
		object1.next(); 							//     
		System.out.println("
next() :"); System.out.println("object1.amount=" + object1.getAmount()); System.out.println("object2.amount=" + object2.getAmount()); } } class Singleton { private static int amount = 5; // private static Singleton singleton = new Singleton();// Singleton private Singleton() { // private Singleton } public static Singleton getSingleton() { // Singleton return singleton; } public synchronized int getAmount() { // synchronized return amount; // } public synchronized void next() { // amount 1 amount++; } }

 
例157採用(簡易工場モデル)
public class FactoryOne {
	public static void main(String[] args) {
		try {
			Person person = Recruitment.findWork("Middle_Programmer"); //           
			System.out.println("              ?");
			person.experience(); 	//       
		} catch (Exception e) { 		//     
			System.out.println("           ,    ");
		} finally { 					//       
			System.out.println("......");
		}
	}
}
class Recruitment {
	public static Person findWork(String s) throws Exception {
		if (s.equalsIgnoreCase("Low_Programmer")) { //               
			return new Low_Programmer();
		} else if (s.equalsIgnoreCase("Middle_Programmer")) {
			return new Middle_Programmer();
		} else if (s.equalsIgnoreCase("High_Programmer")) {
			return new High_Programmer();
		} else {
			throw new Exception(); 		//     
		}
	}
}
interface Person {
	public void experience();				//     
}
class Low_Programmer implements Person {	//      
	public void experience() {
		System.out.println("        ,             !!");
	}
}
class Middle_Programmer implements Person {//      
	public void experience() {
		System.out.println("         ,           !");
	}
}
class High_Programmer implements Person {//      
	public void experience() {
		System.out.println("         ,           !");
	}
}

 
インスタンス158同窓会(工場メソッドモード)
package Chapter08;
public class FactoryTwo {
	public static void main(String[] args) { // java      
		try {
			Forms form = new ShangHai();//            
			MeetOfStudents mos = form.place(); //            
			System.out.println("           ?");
			mos.form(); //            
		} catch (Exception e) { //     
			System.out.println("         ?");
		} finally { //       
			System.out.println("......");
		}
	}
}
interface MeetOfStudents {//      
	public void form();
}
interface Forms {//      
	public MeetOfStudents place();
}
class Hotels implements MeetOfStudents {//   
	public void form() {
		System.out.println("            !");
	}
}
class Home implements MeetOfStudents {//     
	public void form() {
		System.out.println("             ,      ");
	}
}
class Nightclub implements MeetOfStudents {//    
	public void form() {
		System.out.println("           High   ,      ");
	}
}
class QinHuangDao implements Forms {//    
	public MeetOfStudents place() {
		return new Hotels();
	}
}
class ShangHai implements Forms {//   
	public MeetOfStudents place() {
		return new Nightclub();
	}
}
class BeiJing implements Forms {//   
	public MeetOfStudents place() {
		return new Home();
	}
}

 
例159図書展(抽象工場モード)
public class FactoryThree {
	public static void main(String[] args) {
		PropertyOfBook garden = ShowBooks.getProperty("    "); //             
		Book bookname = garden.getBookName();	//       
		Book author = garden.getAuthor();			//       
		Book price = garden.getPrice();				//       
		System.out.println("    :" + bookname.getName());
		System.out.println("    :" + author.getName());
		System.out.println("    :" + price.getName());
	}
}
class Book { 					//   
	String name; 				//     
	public Book(String name) { 	//         
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
abstract class PropertyOfBook {			//     
	public abstract Book getAuthor(); 		//   
	public abstract Book getPrice();			//   
	public abstract Book getBookName(); 	//     
}
class Computer extends PropertyOfBook { 	//      
	public Book getAuthor() {
		return new Book("  ");
	}
	public Book getBookName() {
		return new Book("Java Web    ");
	}
	public Book getPrice() {
		return new Book("88.00");
	}
}
class English extends PropertyOfBook 		//    
{
	public Book getAuthor() {
		return new Book("   ");
	}
	public Book getBookName() {
		return new Book("     ");
	}
	public Book getPrice() {
		return new Book("35.8");
	}
}
class Health extends PropertyOfBook	//    
{
	public Book getAuthor() {
		return new Book("  ");
	}
	public Book getBookName() {
		return new Book("     10   ");
	}
	public Book getPrice() {
		return new Book("66.9");
	}
}
class ShowBooks {					//        
	private static PropertyOfBook po;
	public static PropertyOfBook getProperty(String type) {
		po = new Computer(); 		//        
		if (type.equals("   "))
			po = new English();
		if (type.equals("   "))
			po = new Health();
		return po;
	}
}

 
例160自動車アダプタ(Adapterアダプタモード)
public class Adapter {
	
	public static void main(String[] args) {
		Honda honda = new Honda(); //      
		honda.setColor("red"); //     
		honda.display(); //     
		honda.move(); //     
		AudiAdapter audi = new AudiAdapter();//       
		audi.setColor("black"); //     
		audi.setSpeed(60);
		audi.display(); //     
		audi.move(); //     
	}
}
interface Car { //      
	public void setColor(String color); //     
	public String getColor(); //     
	public void setSpeed(int Speed); //     
	public int getSpeed(); //     
	public void move(); //      
	public void display(); //       
}
class Honda implements Car { //        car       
	String color;
	int speed;
	public void setColor(String color) {
		this.color = color;
	}
	public String getColor() {
		return this.color;
	}
	public int getSpeed() {
		return this.speed;
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}
	public void move() {
		System.out.println("        :" + 3 * speed);
	}
	public void display() {
		System.out.println("       :" + color);
	}
}
class Audi { //        ,    Car  
	String color;
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public void display() {
		System.out.println("       :" + color);
	}
}
class AudiAdapter implements Car {
	private Audi audi;
	private int speed;
	public AudiAdapter() {
		audi = new Audi();
	}
	public void display() {
		audi.display();
	}
	public String getColor() {
		return audi.getColor();
	}
	public void setColor(String color) {
		audi.setColor(color);
	}
	//       Move() setSpeed  getSpeed   
	public int getSpeed() {
		return speed;
	}
	public void move() {
		System.out.println("        :" + 3 * speed);
	}
	public void setSpeed(int speed) {
		this.speed = speed;
	}
}

 
8.4ゴミ回収
例161ゴミ回収の仕組み
public class GarbageCollector {
	static int count;
	int index;
	GarbageCollector() {
		count++;
		System.out.println("object " + count + " is constracted");
		setid(count);
	}
	void setid(int id) {
		index = id;
	}
	protected void finalize(int count) {
		System.out.println("object " + index
				+ " is GarbageCollectord collection");
	}
	public static void main(String args[]) {
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		new GarbageCollector();
		System.gc();
	}
}