コードの最適化 - 戦略パターンの性能を4種類

最適化
(type.equal)( "シンプル"の場合 ){
シンプルモードSimplepolymorphismService
}他のIF(type.equal( "中間")){
ミディアムMiddlepolymorphismService
}他のIF(type.equal( "ハード")){
複雑HardpolymorphismService
}
構造。


多型の1.

メインコード
SimplePolymorphismServiceシンプル= 新しいSimplePolymorphismService(); 
        MiddlePolymorphismServiceの真ん中 = 新しいMiddlePolymorphismService(); 
        HardPolymorphismServiceハード = 新しいHardPolymorphismService(); 
        map.put(" シンプル" 、再起動)。
        map.put(" ミドル" 、中央)。
        map.put(" ハード" 、ハード)。

        PolymorphismServiceポリ =(PolymorphismService)マップ。取得" シンプル" );
        試します{ 
            poly.run()。
        } キャッチ(例外e){ 
            e.printStackTrace(); 
        }

親コード
パブリック インターフェースPolymorphismService {
     ボイドラン()はスロー例外。
}

サブクラス

クラス MiddlePolymorphismServiceは実装PolymorphismService { 

    公共 ボイドラン()スロー例外{ 
        System.out.printlnは( "middlePolymorphismService" ); 
    } 
} 

クラス HardPolymorphismServiceが実装PolymorphismService { 

    公共 ボイドラン()スロー例外{ 
        (のSystem.out.println "hardPolymorphismServiceを" )。
    } 
}

このメソッドは、マップを使用して新しいポリシーを追加し、それが配置を無視することができる、手動で配置する必要があります。

 

2.列挙

列挙クラスで定義されたメソッドを実行します

列挙型クラスコード

パブリック列挙EnumBetterBetter { 
FAST {
無効実行(){ System.out.printlnは( "FAST列挙型" ); } }、 単純{ ボイドラン(){ System.out.printlnは( "単純ヌメ" )。 } } 抽象的な ボイドの実行();
}

メインコードの実行
パブリック 静的 ボイドメイン(文字列[]引数){ 

        EnumBetterBetter enumBetter = EnumBetterBetter.valueOf( "FAST" )。
        enumBetter.run(); 

        EnumBetterBetter enumBetter1 = EnumBetterBetter.valueOf( "シンプル" ); 
        enumBetter1.run(); 

        EnumBetterBetter enumBetter3 =   EnumBetterBetter.FAST。
        enumBetter3.run(); 

        EnumBetterBetter enumBetter4 =   EnumBetterBetter.simple。
        enumBetter4.run(); 
        
    }    

結果

FAST 列挙型
の単純な名前
FAST 列挙型
の単純な名前

 

3.オプション

それはjdk8新機能であるため、オプションは主に、空でないかを決定するために使用され、それは特に使用されていないが、それは本当にクールだと。

主に解決するために

IF(ユーザ== NULL){

}他{

}

 このような状況。

特定のコードの実行

オプション<文字列> userOptional = Optional.ofNullable(ヌル); 
        userOptional.map(アクション1).orElse(アクション2)。
又は使用ラムダ表达式
オプションの<string> userOptional = Optional.ofNullable(NULL )。
        userOptional.map(一覧 - > {
             リターン ヌル; 
        })。orElse( "何もそこにありません");

4.アレイのヒント

Googleからの基本的な論理文の代わりに、テーブルから情報を照会され、呼び出されたプログラミングモデル、テーブル駆動方式である、説明しました。

たとえば、月ごとの日数を取得します。

コードの問題

INT getDay(int型月){
         場合(月== 1)リターン 31 もし(月== 2)リターン 29 もし(月== 3)リターン 31 もし(月== 4)リターン 30 もし(月== 5)リターン 31 もし(月== 6)リターン 30 もし(月== 7)リターン 31 もし(月== 8)リターン31 ;
        もし(月== 9)リターン 30 もし(月== 10)の復帰 31 もし(月== 11)の復帰 30 もし(月== 12)の復帰 31 
    }

ソリューション

INT MONTHDAY [] = {31,29,31,30,31,30,31,31,30,31,30,31 }。

    INT getDays(INT 月){
         戻り MONTHDAY [ - 月]。
    }

 

 

 

おすすめ

転載: www.cnblogs.com/zhanghao1799/p/11023047.html