1. 程式人生 > >Java設計模式(二)

Java設計模式(二)

this main 一個 return cut 建表 演示 算法 變化

行為類模式

策略模式( Strategy)

在策略模式(Strategy Pattern)中,一個類的行為或其算法可以在運行時更改。這種類型的設計模式屬於行為型模式。

在策略模式中,我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。

技術分享圖片

創建一個接口。

Strategy.java

1 public interface Strategy {
2    public int doOperation(int num1, int num2);
3 }

創建實現接口的實體類。

OperationAdd.java

1
public class OperationAdd implements Strategy{ 2 @Override 3 public int doOperation(int num1, int num2) { 4 return num1 + num2; 5 } 6 }

創建 Context 類。

Context.java

public class Context {
   private Strategy strategy;

   public Context(Strategy strategy){
      this.strategy = strategy;
   }

   
public int executeStrategy(int num1, int num2){ return strategy.doOperation(num1, num2); } }

使用 Context 來查看當它改變策略 Strategy 時的行為變化。

StrategyPatternDemo.java

1 public class StrategyPatternDemo {
2    public static void main(String[] args) {
3       Context context = new Context(new OperationAdd());        
4 System.out.println("10 + 5 = " + context.executeStrategy(10, 5)); 5 }

模板模式(Template Method)

一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬於行為型模式。

我們將創建一個定義操作的 Game 抽象類,其中,模板方法設置為 final,這樣它就不會被重寫。CricketFootball 是擴展了 Game 的實體類,它們重寫了抽象類的方法。

TemplatePatternDemo,我們的演示類使用 Game 來演示模板模式的用法。

技術分享圖片

叠代器模式(Iterator)

Java設計模式(二)