工場方法モデルの利点と欠点について

10474 ワード

テストファクトリメソッドモード
package cn.com.factorymethod;

public interface Car {
    void run();
}
class Audi implements Car {
    @Override
    public void run() {
        System.out.println(" ");
    }
}
class Byd implements Car {
    @Override
    public void run() {
        System.out.println(" ");
    }
}
class Benz implements Car {
    @Override
    public void run() {
        System.out.println(" ");
    }
}

ファクトリクラスのインタフェースを定義する
package cn.com.factorymethod;

public interface CarFactory {
    Car creatCar();
}

具体的な工場クラスはこのインタフェースを実現します
package cn.com.factorymethod;

public class AudiFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Audi();
    }
}
package cn.com.factorymethod;

public class BenzFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Benz();
    }
}

package cn.com.factorymethod;

public class BydFactory implements CarFactory{
    @Override
    public Car creatCar() {
        return new Byd();
    }
}


テストケース
package cn.com.factorymethod;

public class Test {
    // 
    public static void main(String[] args) {
        Car c1 = new AudiFactory().creatCar();
        Car c2 = new BydFactory().creatCar();
        Car c3 = new BenzFactory().creatCar();
        c1.run();
        c2.run();
        c3.run();
        // ocp ( )
        // , , 
        /// , 
        // 
    }
}


まとめ:ocpの原則を満たし、新しいクラスを増やすには新しい工場を建設し、コード量を増やす必要があり、同時に複数の工場クラスを修正する必要がある場合は面倒であるが、単純な工場モデルは1つのクラスを修正するだけで、工場方法モデルはアップグレード版の単純な工場モデルである.