設計模式 工廠模式

2021-09-02 04:12:25 字數 4559 閱讀 1373

工廠模式

最核心的功能就是完成物件的建立;

該模式可以避免直接使用new操作符在客戶端建立物件;

找出會變化的地方,將其從不變的**中分離出來!

工廠模式的應用主要分以下4種:

一、靜態工廠

通過靜態方法返回物件。靜態方法可以接收引數,然後根據傳入的引數決定返回的物件。

二、簡單工廠

將工廠組合到客戶端,由客戶端呼叫工廠來獲取物件。

* 簡單工廠與靜態工廠的區別:

靜態工廠的行為不會改變,而簡單工廠則可以再派生出子類來覆蓋建立物件的行為!

三、工廠方法

將物件的建立委託給子類某個方法,父類通過頂層介面引用該方法返回的例項物件。

四、抽象工廠

建立系列產品時使用此模式;

抽象工廠是簡單工廠和工廠方法結合使用的產物;

客戶端組合抽象工廠與系列產品的介面,使用介面來引用抽象工廠所建立的物件。

一、靜態工廠

package pattern.staticfactory;

import org.hqh.util.jutil;

/** * 靜態工廠

*/public class compute***ctory

}enum computertype

//該類不能被例項化,只能例項化其子類

abstract class computer }

class thinkpad extends computer

} this.brand = brand;

this.price = price;

}}

package pattern.staticfactory;

public class client

public static void main(string args)

}

二、簡單工廠

package pattern.******factory;

import org.hqh.util.jutil;

/** * 簡單工廠

*/public class compute***ctory

}enum computertype

//該類不能被例項化,只能例項化其子類

abstract class computer }

class thinkpad extends computer

} this.brand = brand;

this.price = price;

}}

package pattern.******factory;

public class client

public void showcptlist() }

public static void main(string args)

}

三、工廠方法

package pattern.factorymethod;

import org.hqh.util.jutil;

public abstract class computer

public void test()

public void box() }

class computertype

static enum thinkpadtype implements commontype

air,pro,imac; }}

class thinkpad extends computer

} this.brand = brand;

this.price = price;

}}

package pattern.factorymethod;

import pattern.factorymethod.computertype.thinkpadtype;

public abstract class computerstore

//工廠方法,將物件的建立延遲到子類中進行

abstract computer assemble(computertype.commontype type);

}class thinkpadstore extends computerstore

} @override

computer assemble(computertype.commontype type)

}

package pattern.factorymethod;

public class client

}

四、抽象工廠

package pattern.abstractmethod;

public abstract inte***ce materialfactory

class thinkpadmaterialfacotry implements materialfactory

public graphiccard creategraphiccard() }

public cpu createcpu()

public graphiccard creategraphiccard()

}

package pattern.abstractmethod;

public abstract class cpu

class intel extends cpu

}class amd extends cpu

}

package pattern.abstractmethod;

public abstract class graphiccard

class nvidia extends graphiccard

}class ati extends graphiccard

}

package pattern.abstractmethod;

import pattern.abstractmethod.computertype.thinkpadtype;

public abstract class computerstore

//工廠方法,將物件的建立延遲到子類中進行

abstract computer create(computertype.commontype type);

}class thinkpadstore extends computerstore

} @override

computer create(computertype.commontype type)

}

package pattern.abstractmethod;

import org.hqh.util.jutil;

public abstract class computer

public void box()

public abstract void assemble();

@override

public string tostring() }

class computertype

static enum thinkpadtype implements commontype

air,pro,imac; }}

class thinkpad extends computer

@override

public void assemble() }

materialfactory factory;

this.brand = brand;

this.price = price;

this.factory = factory;

} @override

public void assemble()

}

package pattern.abstractmethod;

public class client

}

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...