JAVA初心者がよく使ういくつかのデザインモデル

2604 ワード

Javaの23種類のデザインパターンのうち、初心者にとってはほとんど身につけることが不可能であり、その必要もなく、初心者がよく触れるいくつかのデザインパターンを知るだけでよい.いくつかのモードは把握する必要があるいくつかだと思います:観察者モード、工場モード、単例モード、建設者モード.
一.≪オブザーバ・モード|Viewer Mode|emdw≫:簡単に言えば、オブザーバ・モードは、1つ以上のオブザーバ・オブジェクトにトピック・オブジェクトを監査させる1対以上の依存関係を定義します.このようなトピックオブジェクトの状態の変化は、このオブジェクトに依存するすべてのオブジェクトに通知し、これらのオブジェクトが自動的に更新されるようにすることができる.
 
1.Obervableクラス
このような表現は、モデルビューの例のobservableオブジェクトを表し、そのクラスを継承してアプリケーションが観察したいオブジェクトを表します.1つのobservableオブジェクトには、1つ以上のオブザーバがあります.オブザーバーはObserverインタフェースを実装する任意のオブジェクトである.observableインスタンスが変更されると、ObservableのnotifyObserversメソッドを呼び出すアプリケーションは、オブジェクトのupdateメソッドを呼び出すことによって、インスタンスが変更されたことをオブジェクトに通知します.
 
2.Oberverコネクタ
これはインタフェースクラスで、このインタフェースには実装のための抽象的な方法updateが1つしかありません.このインタフェースを実装するオブジェクトは観察者となり,updateメソッドを実装する.このオブジェクト(オブザーバー)を登録したオブジェクト(オブザーバー)インスタンスバーをnotifiyObserversメソッドで使用すると、オブザーバーはupdateメソッドを自動的に実行します.
二.工場モード
 
名前の通り、このモデル自体は簡単で、ビジネスが簡単な場合に使用されます.それは3つの役から構成されています:1、工場類の役:これは本モデルの核心で、一定の商業論理と判断論理を含んでいます.Javaでは、特定のクラスによって実装されることが多い.
2、抽象プロダクトロール:一般的には、特定のプロダクトが継承する親または実装インタフェースです.Javaではインタフェースまたは抽象クラスによって実現されます.
3、具体的な製品ロール:工場クラスが作成したオブジェクトがこのロールの例です.Javaで特定のクラスによって実装されます
package Factory;
/**
 *      BOOK  
 * @author Administrator
 *
 */
public interface Book {
	/**
	 *      
	 */
	public void ReadBook();
}
 
package Factory;
/**
 *        BookFactory  
 * @author Administrator
 *
 */
public interface BookFactory {
	/**
	 *          
	 * @return
	 */
	public Book getBook();
}

 
三.単一モード
JAvaにおける単例モードは一般的な設計モードであり、単例モードは3種類に分けられる:怠け者式単例、餓漢式単例、登録式単例の3種類.単例モードには特徴があります.1、単例クラスには1つのインスタンスしかありません.2、単一のインスタンスクラスは自分で自分の唯一のインスタンスを作成しなければならない.3、単一のクラスは、他のすべてのオブジェクトにこのインスタンスを提供する必要があります.単一のインスタンス・モードは、クラスに1つのインスタンスしかなく、独自にインスタンス化され、システム全体にこのインスタンスが提供されることを保証します.コンピュータシステムでは、スレッドプール、キャッシュ、ログオブジェクト、ダイアログボックス、プリンタ、グラフィックスカードのドライバオブジェクトが単一の例として設計されることが多い.これらのアプリケーションは、リソースマネージャの機能を多かれ少なかれ備えています.各コンピュータには複数のプリンタがありますが、2つの印刷ジョブが同時にプリンタに出力されないように、Printer Spoolerは1つしかありません.各コンピュータにはいくつかの通信ポートがあり、システムは、1つの通信ポートが同時に2つの要求によって同時に呼び出されないように、これらの通信ポートを集中的に管理しなければならない.要するに、単例モデルを選んだのは、不一致状態を避け、政出多頭を避けるためだ.
 
package Single;
/**
 *       
 * @author Administrator
 *
 */
public class Student {
	private static Student stu=new Student();
	/**
	 *     
	 */
	private Student(){
		System.out.println("      :"+System.currentTimeMillis());
	}
	public  static Student getStu(){
//		synchronized(Student.class){
//			if(stu==null){
//				stu=new Student();
//			}
//		}
		
		return stu;
		
	}
}