工廠模式
對於產品來講有:
①簡單工廠模式
②方法工廠模式
對於產品組來講有:
抽象工廠模式
簡單工廠模式:
- 簡單工廠模式:
- 1.簡單工廠模式通過調用工廠類不同的靜態方法來創建不同的實例對象
- 2.簡單工廠模式違背了面向對象設計原則,不易於拓展。在新增功能時需要修改
- 源代碼,但結構簡單,編程難度低,我們經常使用簡單工廠模式。
*/
/*簡單工廠模式創建方式: - 通過多個類實現某個接口,在工廠中各自返回該類的實例對象
*/
public class Carfactory {
public static Cars CreatAudi()
{
return new Audi();
}
public static Cars CreatBenz()
{
return new Benz();
}
}
方法工廠模式:
/* 方法工廠模式與簡單工廠模式的區別
- 1.簡單工廠模式依賴的類較少,只有工廠類和實現類,通過調用靜態方法來獲取實例對象
- 2.方法工廠模式依賴的類多,但遵守了面向對象設計原則實現了接口工廠,易於後期的拓
- 展,而簡單工廠模式 需要修改源代碼來添加新增功能
- 3.方法工廠編程難度高,簡單工廠簡單易於維護
- 我們經常使用簡單工廠模式
*/
/*方法工廠模式創建方式 - 每個類都有自己的工廠,每個類的工廠實現工廠接口返回一個類的實例對象
*/
public interface Carsfactory {
public Cars creatCar();
}
public class Benzfactory implements Carsfactory{
@Override
public Cars creatCar() {
return new Benz();
}
}
public class Audifactory implements Carsfactory {
@Override
public Cars creatCar() {
return new Audi();
}
}
抽象工廠模式:
/*
- 抽象工廠模式:
- 1.只能對產品組進行修改,不能對新增單一的功能進行修改
*/
/*
- 抽象工廠模式創建方式:
- 針對於某一個產品組,有多個產品類實現產品接口,通過一個產品組工廠(工廠中方法的返回值是
- 某一組產品組),生產不同的產品組繼承產品組工廠,可以自定義返回產品的類型。
- 特點:只能對某一產品組進行修改,不能對產品進行修改
*/
public interface Carfactory {
public Engine CreatEngine();
public Luntai CreatLunTai();
public Seat CreatSeat();
}
public class HighPriceCarfactory implements Carfactory {
@Override
public Engine CreatEngine() {
return new SEngine();
}
@Override
public Luntai CreatLunTai() {
// TODO Auto-generated method stub
return new ALuntai();
}
@Override
public Seat CreatSeat() {
// TODO Auto-generated method stub
return new Aseat();
}
}
public class LowpriceCarfactory implements Carfactory {
@Override
public Engine CreatEngine() {
return new AEngine();
}
@Override
public Luntai CreatLunTai() {
// TODO Auto-generated method stub
return new BLuntai();
}
@Override
public Seat CreatSeat() {
// TODO Auto-generated method stub
return new Bseat();
}
}
public class MidpriceCarfactory implements Carfactory {
@Override
public Engine CreatEngine() {
return new AEngine();
}
@Override
public Luntai CreatLunTai() {
// TODO Auto-generated method stub
return new ALuntai();
}
@Override
public Seat CreatSeat() {
// TODO Auto-generated method stub
return new Aseat();
}
}