簡體   English   中英

如何在Java中基於變量值調用其他構造函數

[英]How to call a different constructor based on variable value in Java

這確實是一個簡單的問題。

class salad
class chef_salad extends salad
class ceasar_salad extends salad

所以我有一個變量type ,我想根據類型創建適當的對象。

顯然我可以

if(type.equals("chef"){ salad s = new chef_salad(); }

我想我什至可以使它成為返回salad對象的靜態方法,但這真的是最好的方法,還是有更好的方法通過構造函數來實現呢?

ps。 虛構的例子

您正在談論Factory模式 ,您希望根據輸入在實例化繼承層次結構中的給定類型的對象后隱藏邏輯。

public class SaladFactory
{
    public Salad getSalad(type) {
        if ("chef".equals(type) {
            return new ChefSalad();
        }
        ...
    }
}

我會這樣做:

public static Salad createSaladInstance(String type)
{
    if(type.equals("Salad")) return new Salad();
    else if(type.equals("ChefSalad")) return new ChefSalad();
    // ...
}

// ...

Salad s = createSaladInstance(type);

請參閱工廠設計模式

public interface SaladFactory
   {
   public Salad createSalad();
   public String getName();
   }

for(SaladFactory factory:factories)
{
if(factory.getName().equals("caesar")) return facory.createSalad();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM