Java設計模式 工廠方法模式

2021-06-04 01:16:06 字數 2102 閱讀 5791

定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。factory method 使乙個類的例項化延遲到其子類。

package car_inte***ce;

public inte***ce icar_inte***ce

package car_imple;

import car_inte***ce.icar_inte***ce;

public class base_car_imple implements icar_inte***ce

public void setspeed(int speed)

public string getname()

public void setname(string name)

public void start()

public void stop()

}

package car_imple;

import car_inte***ce.icar_inte***ce;

public class car_audi_imple extends base_car_imple

public void stop()

}

package car_imple;

import car_inte***ce.icar_inte***ce;

public class car_3w_imple extends base_car_imple

public void stop()

}

package car_factory_inte***ce;

import car_inte***ce.icar_inte***ce;

public inte***ce icar_factory

package car_factory_imple;

import car_factory_inte***ce.icar_factory;

import car_imple.car_audi_imple;

import car_inte***ce.icar_inte***ce;

public class audi_car_factory_imple implements icar_factory

}

package car_factory_imple;

import car_factory_inte***ce.icar_factory;

import car_imple.car_3w_imple;

import car_imple.car_audi_imple;

import car_inte***ce.icar_inte***ce;

public class threew_car_factory_imple implements icar_factory

}

客戶端執行程式**:

package run_main;

import car_factory_imple.audi_car_factory_imple;

import car_factory_inte***ce.icar_factory;

import car_inte***ce.icar_inte***ce;

public class run_main

}

程式執行結果如下:

奧迪a6 車以專利技術起動了 最高速度為:

300奧迪a6 車以專利技術停車了

通過使用工廠方法模式就可以將物件的建立延遲到子類進行例項化,而且每個工廠建立不同的品牌的汽車,每個汽車的功能都有自己「專利」的實現,這樣可以將不同「品牌」的「汽車」的建立進行分類,有利於物件建立的清晰性。建立不同的汽車只需要改動這句**就可以了:

icar_factory car_factory = new audi_car_factory_imple();

Java設計模式 工廠方法模式

工廠方法模式應用背景 客戶類不關心使用哪個具體的類,只關心介面所提供的功能。建立過程比較複雜,例如需要初始化其他關聯的資源類。介面或者抽象類有許多實現類,客戶 需要編寫大量if else邏輯來決定執行時使用哪個具體的實現類。不希望給客戶程式暴露太多的類的內部結構,這樣做可以降低耦合度。優化效能,比如...

java設計模式 工廠方法模式

簡單工廠模式的應用就是用來建立乙個物件,簡單工廠模式是將所有物件的初始化集於乙個具體的工廠類來實現,這個工廠類負責所有產品的建立,但是這種建立只能建立單一的產品,如簡單工廠模式裡的chickenfactory這種工廠只能生產雞肉這個系列的產品,而當需求發生變化時簡單工廠模式就無法應對了。例如 我再一...

JAVA設計模式 工廠方法模式

package com.fsti.factory.factorymethod public inte ce output package com.fsti.factory.factorymethod public class printer implements output else public...