シンプル工場---- ----ファクトリメソッドAbstract Factoryパターン

シンプル工場

具体的には、プラントは単にモデル、ではないです
が、デザインのアイデア---- つまり、サービスとクライアントの分離ビジネスロジックとインターフェース・ロジックの分離、
サーバー製品を変更し、クライアントでは、変更する必要はありません増加しますクラスは、することができます。
具体的な実践:
1.製品サブクラスとして、親クラスとしてファクトリクラス、サブクラス、特定の製品カテゴリとして製品クラスをファクトリクラスを作成し
、製品のオブジェクトが作成され、製品の機能のリターンを確立し、クライアントに応じて、異なるパラメータの2ファクトリクラスの選択、製品具現化クラスメソッド、特定の製品のクラスを作成
サーバコード:

服务端
public class Factory{
	// 工厂制作**相应的产品对象**
	public createProduct(int choose){
		HamburgerProduct hamburger = null;
		switch (choose){
			case "1":
			hamburger = new Hamburger_Spicy();
			break;
			case "2":
			hamburger = new Hamburger_Beef();
			break;
		}
		return hamurger;
	}
}
// 汉堡产品确定需要的动作
public class HamburgerProduct extends Factory{
	private double price;
	public double getPrice() {return price;}
	public double setPrice() {return price;}
	public void showInfo(){};
	
}
// 具体的汉堡产品实现具体的操作,比如实现价格显示,和价格初始化
public class Hamburger_Spicy extends HamburgerProduct{
	// 价格初始化
	public Hamburger_Spicy(){
		this.setPrice(18.0);
	}
	// 具体实现了展现信息
	@Override
	public void showInfo(){
		System.out.println("香辣汉堡的价格为" + this.getPrice());
	}
}
//具体的汉堡产品实现
public class Hamburger_Beef extends HamburgerProduct{
	// 价格初始化
	public Hamburger_Spicy(){
		this.setPrice(38.0);
	}
	// 具体实现了展现信息
	@Override
	public void showInfo(){
		System.out.println("牛肉汉堡的价格为" + this.getPrice());
	}
}

クライアントコード:

public class Main{
	public static void main(String[] args){
		HamburgerProduct hamburger;
		//客户端输入具体的参数,就能获得相应的产品对象
		hamburger = Factory.createProduct(1);
	}
}

利点

達成するために1 分離(ビジネス・ロジックおよびインターフェースロジックのすなわち分離)によって作成および使用されるオブジェクトを
2.クライアントは、ちょうど対応するパラメータは、特定の製品クラスを知って作成したクラスの特定の製品カテゴリの名前を知っている必要はありませんすることができます。
3.設定ファイルを導入することで、あなたは置き換えることができ、任意のクライアント側のコードを変更せずに、新たな特定の製品カテゴリを追加し、ある程度のシステムの柔軟性を向上させます。
私が言うことはありません欠点明らかに、これはちょうどあるので、アイデアを定期的に使用するが、実際の作品は、単純なようにすることはできません、と非常に多くの致命的な欠点が、これは本当にデザインパターンではありません。

ファクトリメソッドパターン

公開された19元の記事 ウォンの賞賛4 ビュー483

おすすめ

転載: blog.csdn.net/qq_35050438/article/details/104095463