Java設計パターンのファクトリパターン(シンプルファクトリ、ファクトリパターン)

シンプルなファクトリーパターン

自動車を例に、単純なファクトリ パターンを実装します
。 車のインターフェイスを定義します。ファクトリ パターンはオブジェクトの作成にのみ関連するため、特定のメソッドを定義する必要はありません。

package com.xzy.simpleFactory;

public interface ICar {
    
    
    //定义小汽车接口
}
package com.xzy.simpleFactory;

public class UpCar implements ICar {
    
    
    //高档汽车的实现
}
package com.xzy.simpleFactory;

public class MidCar implements ICar {
    
    
    //中档汽车的实现
}
package com.xzy.simpleFactory;

public class DownCar implements ICar {
    
    
    //低档汽车的具体实现
}

3種類のクルマをつくるクルマづくり工場

package com.xzy.simpleFactory;

public class CarSimpleFactory {
    
    
    public static final String UPTYPE = "uptype";
    public static final String MIDTYPE = "midtype";
    public static final String DOWNTYPE = "downtype";

    public static ICar create(String type) {
    
    
        ICar obj = null;
        if (type.equals(UPTYPE)) {
    
    
            //创建高档汽车
            obj = new UpCar();
        }else if(type.equals(MIDTYPE)){
    
    
            //创建中等汽车
            obj = new MidCar();
        }else if(type.equals(DOWNTYPE)){
    
    
            //创建低档汽车
            obj = new DownCar();

        }
        //返回创建好的对象
        return obj;
    }
}

テスト用のテストクラスを作成する

package com.xzy.simpleFactory;

import org.junit.Test;

public class SimpleFactoryTest {
    
    
    @Test
    public void test(){
    
    
        //传入需要创建的对象类型
        ICar car = CarSimpleFactory.create(CarSimpleFactory.MIDTYPE);
        System.out.println(car.getClass());

    }
}

実行結果が表示されなくなりました。

シンプルファクトリーの特徴
  1. 彼は具象クラスであり、インターフェイスや抽象クラスではありません。
  2. 新しいタイプのハイエンド カーを追加したい場合は、ハイエンド カーの実装を記述し、ファクトリ クラスの create メソッドを変更する必要があります。

工場パターン

自動車インターフェースの定義と 3 台の自動車の実現は、単純な工場の定義と同じです。

抽象ファクトリーを定義する

package com.xzy.Factory;

public abstract class AbstractFactory {
    
    
    //定义抽象工厂,具有子工场的共同特性
    public abstract  ICar create();
}

特定のサブファクトリーを定義する

package com.xzy.Factory;

public class UpFactory extends AbstractFactory {
    
    
    @Override
    public ICar create() {
    
    
        return new UpCar();
    }
}

*****************************************

package com.xzy.Factory;

public class MidFactory extends AbstractFactory {
    
    
    @Override
    public ICar create() {
    
    
        return new MidCar();
    }
}

******************************************

package com.xzy.Factory;

public class DownCarFactory extends AbstractFactory {
    
    
    @Override
    public ICar create() {
    
    
        return new DownCar();
    }
}

テストクラスを書く

package com.xzy.Factory;

import org.junit.Test;

public class AbstractFactoryTest {
    
    
    @Test
    public void test(){
    
    
        AbstractFactory obj = new UpFactory();

        ICar car = obj.create();

        System.out.println(car.getClass());
    }
}

演算結果

class com.xzy.Factory.UpCar

Process finished with exit code 0

抽象的な工場

  1. 一般に、ファクトリ モードでは、単純ファクトリは単一製品システムですが、抽象ファクトリは複数製品システムです。
  2. 本質的に、抽象ファクトリーとファクトリーパターンは統一されています。

おすすめ

転載: blog.csdn.net/weixin_42643321/article/details/107957885