Javaベース - 抽象クラスとテンプレートメソッドデザインパターン

抽象クラスと匿名のサブクラスのオブジェクトを作成します

パッケージabstracttest; 

/ * 
 *抽象クラスの匿名のサブクラス
 * 
 * * / 

抽象 クラス人{ 
    文字列名; 
    int型年齢、
    
    公共者(文字列名、int型年齢){ 
        スーパー(); 
        この .nameの= 名前;
         この .age = 年齢; 
    } 
    公共の人物(){ 
        スーパー(); 
    } 
    
    パブリック 抽象 ボイド(EAT); 
    
    公共の 無効徒歩(){ 
        システム。OUT .println(" 男ウォーキング"); 
    } 
} 
クラスの学生は、個人{延び
     INTのスコアを、
    
    
    公共学生(){ 
        スーパー(); 
    } 
    公共の学生(文字列名、int型の年齢){ 
        スーパー(名前、年齢); 
    } 
    公共の学生(文字列名、int型の年齢、int型スコア){ 
        スーパー(名前、年齢); 
        この .score = スコア。
    } 

    公共 ボイドは(食べる){ 
        システム。アウト .println(" 学生が食べます" ); 
    } 
}

パブリック クラスAbstractTest {
     公共の 静的な 無効メイン(文字列[] args)を{ 
        
        // P-作成抽象メソッドを達成上書きするオブジェクト内で、Pと呼ばれるオブジェクトの匿名のサブクラス名のオブジェクトを 
        人= P- 新しい新しい(人) { 
            
            @Override 
            公共 ボイドはEAT(){ 
                システム。OUTの .println(" 1 " ); 
            } 
        }; 
        方法(P)であり; 
        
    } 
    パブリック 静的 ボイドメソッド(人物P){ 
        p.eat(); 
        p.walk()。
    } 
}

テンプレートメソッドデザインパターン:テンプレートメソッドを呼び出すと、テンプレートメソッドが書かれたテンプレートメソッド第1の共通の部分である抽象クラスであり、その後、フックメソッドを宣言し、実装するために子クラスを聞かせて、新しいサブクラスオブジェクトは、自動的にフックメソッドを呼び出します。インクルード

TemplateMethodパッケージ変更のため、

輸入はjava.util.ArrayList; 

/ * 
 * 
 *抽象クラスのアプリケーション:のテンプレートメソッドデザインパターン
 *概念:フックメソッド、サブクラス実装と呼ばれるフック、サブクラスがぶら下がっオブジェクト以下の抽象クラス、フックのような方法
 * 
 * * / 

パブリック クラスTemplateTest {
     公共 静的 ボイドメイン(文字列[]引数){ 
        サブテンプレートT = 新しい新しいサブテンプレート(); 
        
        t.spendTime(); 
    } 
    
    
} 

抽象 クラステンプレート{ 
    
    // 計算は、コード実行の一部にかかります時間
    公共 無効spendTime(){ 
        
        ロングスタート= にSystem.currentTimeMillis(); 
        
        この。コード();    // 不确定的部分
        
        長い端= にSystem.currentTimeMillis(); 
    
        システム。アウト .println(" 花费时间为" +(エンドスタート)); 
    } 
    
    パブリック 抽象 ボイドコード(); 
    
} 

クラスのサブテンプレートが延びるテンプレート{ 
    
    @Override 
    公共 ボイドコード(){ 
        のArrayList <整数>のArrayList = 新規のArrayList <整数> ();
        以下のためにINT iが= 2 ; I <= 100000 ; I ++ 
            arrayList.add(I)。
        システム。アウト.println(arrayList.size()); 
            
    } 
    
}

おすすめ

転載: www.cnblogs.com/zsben991126/p/12148118.html