Java設計模式

   Java設計模式:java

(一)、工廠模式      數據庫

問題:工廠模式
分析:(一)、工廠模式是咱們在java設計模式中是隨處可見的模式,例如著名的Jive論壇就使用了大量的工廠模式
爲何工廠模式會如此受到?由於工廠模式至關於建立實例對象的NEW,咱們經常根據類Class生成實例對象,
例如:A a=new A();所以,之後若建立多個實例對象,能夠考慮使用工廠模式。
(二)、在簡單建立實例化對象(A a=new A())的狀況下,咱們考慮實例化參數之類,方便修改,就能夠再也不實例化對象
再去作修改。
(三)、在建立實例化對象時,是根據需求而建立,例如,一個媽媽她今年生了一個兒子,能夠實例化一個對象,若明年她接着又
生兩個兒子,不可能又實例化,就能夠把媽媽這個類抽象成一個接口對象類,無論她生多少個兒子,均可以實現這個接口對象類便可。
如:Simpole son=new SonSimple(),Simpole son2=new Son2Simpole();
以上的例子都是傳統的程序,如果考慮到如今的工廠設計模式,就不會那麼繁瑣及死板。
結果:代碼示例設計模式

public class Factory{

  public static Sample creator(int which){

  //getClass 產生Sample 通常可以使用動態類裝載裝入類。
  if (which==1)
    return new SampleA();
  else if (which==2)
    return new SampleB();

  }

}

(二)、抽象工廠模式ui

問題:抽象工廠
分析:在剛剛操做完工廠模式實例以後,咱們有時須要改變需求,就是不知只有一個媽媽這個抽象接口,還新增了一個媽媽抽象接口,則其須要用
到抽象工廠模式來封裝在一個接口類中。再去繼承該接口實現其中的屬性方法。
結果:代碼示例:this

public abstract class Factory{

  public abstract Sample creator();

  public abstract Sample2 creator(String name);

}

public class SimpleFactory extends Factory{

  public Sample creator(){
    .........
    return new SampleA
  }

  public Sample2 creator(String name){
    .........
    return new Sample2A
  }

}

public class BombFactory extends Factory{

  public Sample creator(){
    ......
    return new SampleB 
  }

  public Sample2 creator(String name){
    ......
    return new Sample2B
  }

}

(三)、單例模式spa

問題:單例模式
分析:單例模式在程序中的做用是保證在Java應用中,一個類只有一個實例存在,在之後項目的不少操做中,好比
數據庫的鏈接都須要這樣單線程操做。還有,單例模式可以被狀態化,這樣,多個單態類在一塊兒能夠作一個狀態倉庫
同樣向外提供服務。好比,你在一個論壇遊覽器評論了一條信息,每次遊覽該論壇都會計數,單態類能保持這個狀態
計數,而且單線程能自動加1。你能夠在不修改單態接口的狀況下方便作到。線程

結果:代碼示例:設計

public class Singleton {

  private Singleton(){}
  //在本身內部定義本身一個實例,是否是很奇怪?
  //注意這是private 只供內部調用

  private static Singleton instance = new Singleton();

  //這裏提供了一個供外部訪問本class的靜態方法,能夠直接訪問  
  public static Singleton getInstance() {
    return instance;   
   } 
}

第二種形式:
public class Singleton {
  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  if (instance==null)
    instance=new Singleton();
  return instance;   }

}

(四)、建造者模式code

  問題:建造者模式
  分析:建造者模式是一步一步建立的一個複雜對象,該模式相似於抽象工廠模式,是爲了構建複雜的過程和部件
,是解耦過程和部件。由於一個複雜對象有不少複雜部分組成,例如:汽車是由方向盤、輪胎等部件組成完成的。對象

  結果:代碼示例:

  

public interface Builder {
  //建立部件A  好比建立汽車車輪
  void buildPartA(); 
  //建立部件B 好比建立汽車方向盤
  void buildPartB(); 
  //建立部件C 好比建立汽車發動機
  void buildPartC(); 

  //返回最後組裝成品結果 (返回最後裝配好的汽車)
  //成品的組裝過程不在這裏進行,而是轉移到下面的Director類中進行.
  //從而實現瞭解耦過程和部件
  Product getResult();

}
------
public class Director {

  private Builder builder;

  public Director( Builder builder ) { 
    this.builder = builder; 
  } 
  // 將部件partA partB partC最後組成複雜對象
  //這裏是將車輪 方向盤和發動機組裝成汽車的過程
  public void construct() { 
    builder.buildPartA();
    builder.buildPartB();
    builder.buildPartC();

  }

}
---
public class ConcreteBuilder implements Builder {

  Part partA, partB, partC; 
  public void buildPartA() {
    //這裏是具體如何構建partA的代碼

  }; 
  public void buildPartB() { 
    //這裏是具體如何構建partB的代碼
  }; 
   public void buildPartC() { 
    //這裏是具體如何構建partB的代碼
  }; 
   public Product getResult() { 
    //返回最後組裝成品結果
  }; 
}
----

public static void main(String[] args) {

ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director( builder );

director.construct();
Product product = builder.getResult();


}

 

(五)、原型模式

問題:原型模式
分析:定義:指定建立對象的種類,而且經過拷貝這些原型建立新對象,原型模式容許一個對象能夠建立寧一個對象,根本無須知道它建立的過程,
而工做原理是經過原型對象傳給那個要建立對象的對象,這個要發動建立對象的對象經過請求原型對象拷貝它們來建立對象。

結果:代碼示例:

public abstract class AbstractSpoon implements Cloneable
{ 
  String spoonName; 

  public void setSpoonName(String spoonName) {this.spoonName = spoonName;}
  public String getSpoonName() {return this.spoonName;}

  public Object clone() 
  {
    Object object = null;
    try {
      object = super.clone();
    } catch (CloneNotSupportedException exception) {
      System.err.println("AbstractSpoon is not Cloneable");
    }
    return object;
  }
}
---- 具體實現類
public class SoupSpoon extends AbstractSpoon
{ 
  public SoupSpoon()
  {
    setSpoonName("Soup Spoon"); 
  }
}

 今晚,就暫時闡述這些設計模式,明天再繼續。

相關文章
相關標籤/搜索