ファクトリメソッドモデル(プラントモデル)

モデル名と分類

工場

意図

サブクラスは技術をインスタンス化するクラスを決定させ、定義されたオブジェクトのインタフェースを作成します。そのサブクラスを遅らせるために、クラスをインスタンス化するために、工場の製造方法。

注1:ファクトリメソッドはそのサブクラスを遅らせるために、クラスをインスタンス化することです。これは、ファクトリインタフェースの実装クラスを指します。
注2:ファクトリメソッドパターンだけで最適化モデル工場は、多くの場合、工業地帯や工場を区別するための簡単な方法になりがちません。それとも分け:工場出荷時のモデル-モデルのファクトリメソッド簡単な工場モード-工場モデル

エイリアス

FactoryMethod

モチベーション

:シンプルなファクトリパターンを参照https://www.cnblogs.com/dhcao/p/11151858.html
この単純なモデルで最適化された植物を:

  • 植物の使用でシンプルで便利以上のものですが、設計で、より多くの行にあるとしながら開閉設計原理:新にオープン、修正のため閉鎖しました
  • シンプルなプラントでは、我々は、工場のif-elseまたは他のケースに応じて選択、またはルーティング何インスタンス作成されますが、製品の新しいインスタンスならば、ルートを追加することが必要であるが、工場で決定され、そのモード言葉遣い開閉の原則に反します。

構造

参加者

  • あなたは製品モジュールを作成する必要がある - 形状、円、正方形、長方形を
  • 工場モジュール - ShapeFactory、CircleFactory、SquareFactory、RectangleFactory
  • クライアントを呼び出します(図ショーには示されていません)

連携

比較シンプル工場パターンがメモリことがわかります。

  • 各製品は、排他的な製品を作成し、各プラントを作成するための独自の工場を持っています。
  • これは植物の特定の使用、クライアントによって決定されます。

コード例

//步骤 1
//创建一个接口:
//Shape.java
public interface Shape {
   void draw();
}


//步骤 2
//创建实现接口的实体类。
//Rectangle.java
public class Rectangle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}

//Square.java
public class Square implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Inside Square::draw() method.");
   }
}

//Circle.java
public class Circle implements Shape {
 
   @Override
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}

//步骤 3
//创建一个工厂接口
//ShapeFactory.java
public class ShapeFactory {
    
   //使用 getShape 方法获取形状类型的对象
   public Shape getShape();
}

// 创建具体的工厂类
//CircleFactory.java
public class CircleFactory implements ShapeFactory{
    
   //使用 getShape 方法获取形状类型的对象
    public Shape getShape(){
        return new Circle();
    }
}

//SquareFactory.java
public class SquareFactory implements ShapeFactory{
    
   //使用 getShape 方法获取形状类型的对象
    public Shape getShape(){
        return new SquareFactory();
    }
}

//RectangleFactory.java
public class RectangleFactory implements ShapeFactory{
    
   //使用 getShape 方法获取形状类型的对象
    public Shape getShape(){
        return new RectangleFactory();
    }
}


// 步骤 4
// 客户端使用工厂。

//FactoryPatternDemo.java
public class FactoryPatternDemo {
 
   public static void main(String[] args) {
      ShapeFactory shapeFactory = new ShapeFactory();
 
      //通过Circle工厂获取 Circle 的对象,并调用它的 draw 方法
      ShapeFactory cFactory = new CircleFactory();
      Shape circle = cFactory.getShape();
 
      //调用 Circle 的 draw 方法
      circle.draw();
 
      //通过Square工厂获取 Square 的对象,并调用它的 draw 方法
      ShapeFactory sFactory = new SquareFactory();
      Shape square = sFactory.getShape();
 
      //调用 Square 的 draw 方法
      square.draw();
   }
}
    

関連パターン

シンプルなファクトリパターン、工場出荷時のパターン、Abstract Factoryパターン

おすすめ

転載: www.cnblogs.com/dhcao/p/11265692.html