JAVA設計模式筆記

新手教教我發表於2018-08-30

JAVA設計模式
1.建立模式之工廠模式
工廠模式參考的是現實生產環境的工廠,不知道你是否在深圳的電子廠打工過,如果有這樣的經歷你就會很好理解。在工廠裡是按產品線劃分的,在每個產品的流水線上工人們各司其職,將一個個零部件組裝起來成為最終產品。就拿我之前呆過的工廠來說,在哪裡分了耳機產品線,音響產品線等。不瞎扯了,上程式碼。
1.1靜態工廠模式

interface Product {}
class Headset implements Product {}
class Speakerbox implements Product {}
public class 3nodFactory 
{
   //工廠一般不用例項化,所以定義私有構造方法
   private 3nodFactory(){}
   //定義工廠不同產線的功能方法
   public static Product getHeadset(){}
   public static Product getSpeakerbox(){}
}
//客戶端呼叫的時候根據客戶需求獲取不同產品
public class Client
{
    public Product getProduct(String type)
    {
        Product product = null;
        if(type.equals("speakerbox"))
        {
            product = 3nodFactory.getSpeakerbox();
        }
        else if(type.equals("headset"))
        {
            product = 3nodFactory.getHeadset();
        }
        return product;
    }
}


----------

靜態工廠模式實現簡單,但是不便於擴充套件,如果工廠業務擴充套件新增加了產品線,那麼我們就需要修改現有的工廠類方法,這樣就違背了Open close principle(開閉原則),所以就產生了下面的抽象工廠模式。
1.2抽象工廠模式

//定義產品線介面
interface ProductLine { Product get() }
public SpeakerboxFactory implements ProductLine 
{
    public Product get()
    {
       return new Speakerbox();
    }
}
public HeadsetFactory implements ProductLine 
{
    public Product get()
    {
        return new Headset();
    }
}
 public class 3nodFactory
 {
     public Product clientGetProduct(String type)
     {
        Product product = null;
        if(type.equals("speakerbox"))
        {
            product = new SpeakerboxFactory().get();
        }
        else if(type.equals("headset"))
        {
            product = new HeadsetFactory().get();
        }
        return product;
     }
 }


----------
這就是最接近現實工廠的模型了,不同產線負責生產產品,客戶找公司下單。公司的擴充套件也只需要增加新的產品線,不用修改原有程式碼。

相關文章