《Factory》


《Factory》
デザインモデルの紹介
工場モデルの紹介
工場モデルのプロジェクト応用を把握する
1.設計モード
  • はソフトウェアエンジニアリング業界に所属せず、この用語は1990年代にErich Gammaらによって建築設計分野からコンピュータ科学に導入された.
  • ソフトウェア設計モード(Design pattern)は、設計モードとも呼ばれ、繰り返し使用され、多くの人が知っている、分類編目された、コード設計経験の総括である.
  • 設計モードを使用するのは、コードを再利用可能にし、コードを他人に理解されやすくし、コードの信頼性、プログラムの再利用性を保証するためである.
  • は、オブジェクト向け設計で繰り返される問題の解決策である.
  • 設計モードは、一般に、相互に密接に作用するクラスとオブジェクトのセットを記述する.設計モードはソフトウェア設計を議論する共通言語を提供し、熟練した設計者の設計経験を初心者や他の設計者に身につけることができる.
  • モードの原則
  • 開閉原則
  • 里氏置換原則
  • 合成多重化原則
  • 依存逆転原則
  • インタフェース分離原則
  • 単一職責原則
  • 最小知識原則
  • 設計モードの分類
  • 作成モード
  • 構造型モード
  • 動作モード

  • 2.工場モデル
  • オブジェクトの作成の詳細を非表示にするための
  • モードコア:ファクトリクラス
  • は、単純な工場、工場方法、抽象的な工場に細分化することができる
  • 3.プロジェクト応用
  • Software.java
    package com.imooc.factory;
    
    import com.imooc.factory.i18n.I18N;
    import com.imooc.factory.i18n.I18NFactory;
    
    public class Software {
           
    	public static void main(String[] args) {
           
    		I18N i18n = I18NFactory.getI18NObject("spain");
    		System.out.println(i18n.getTitle());
    	}
    }
    
    
  • Chinese.java
    package com.imooc.factory.i18n;
    
    public class Chinese implements I18N{
           
    	public String getTitle() {
           
    		return "      ";
    	}
    }
    
    
  • Italian.java
    package com.imooc.factory.i18n;
    
    public class Italian  implements I18N{
           
    	public String getTitle() {
           
    		return "Sistema della direzione del personale";
    	}
    }
    
    
  • Spanish.java
    package com.imooc.factory.i18n;
    
    public class Spainish  implements I18N{
           
    	public String getTitle() {
           
    		return "Sistema de gesti��n del personal";
    	}
    }
    
    
  • I18N.java
    package com.imooc.factory.i18n;
    //Internationalization
    public interface I18N {
           
    	public String getTitle();
    }
    
    
  • I18NFactory.java
    package com.imooc.factory.i18n;
    
    public class I18NFactory {
           
    	//    
    	public static I18N getI18NObject(String area) {
           
    		if(area.equals("china")) {
           
    			return new Chinese();
    		}else if(area.equals("spain")) {
           
    			return new Spainish();
    		}else if(area.equals("italy")) {
           
    			return new Italian();
    		}else {
           
    			return null;
    		}
    	}
    }