最適化
(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 [ - 月]。 }