シンプルファクトリモード(SimpleFactory)----メモの作成

2352 ワード

シンプルファクトリモード(SimpleFactory)----メモの作成
一、役柄に関わる:
a) ファクトリクラス(Factory):クライアントで直接呼び出し、javaによって実装されるプロダクトオブジェクトを作成します.
b) 抽象製品(Product):javaインタフェースまたはJava抽象クラス実装.具体的な製品親orインタフェース.
c) 具体的な製品(Concrete Product):工場クラスが作成した具体的な製品
 
 
二、物語の説明      
1、FACTORY-MMを追うには食事をごちそうする必要があります.マクドナルドの手羽先とケンタッキーの手羽先はMMが好きなものです.味は違いますが、MMをマクドナルドやケンタッキーに連れて行っても、従業員に「手羽先を4つください」と言ってください.マクドナルドとケンタッキーは手羽先生産のファクトリー
工場モデル:顧客クラスと工場クラスが分かれています.消費者はいつでも何かの製品が必要で、工場に頼むだけでいい.消費者は修正する必要がなく、新製品を受け入れることができる.欠点は製品が修正されると、工場類も相応の修正をしなければならないことです.たとえば、クライアントにどのように作成するか、どのように提供するかなどです.
具体的な製品(AbstractProject)
public abstract class AbstractProject {
	public abstract void printProject();
	
}

具体的な製品(ProjectA)
public class ProjectA extends AbstractProject {

	@Override
	public void printProject() {
		System.out.println("new     ProjectA");
	}

}

具体的な製品(ProjectB)
public class ProjectB extends AbstractProject {
	@Override
	public void printProject() {
		System.out.println("new    projectB");
	}

}

シンプルファクトリ(SimpleFactory)
public class SimpleFactory {
	//-------------   ----------------------//
	public AbstractProject create(String type){
		if(type.equals("projectA")){
			return new ProjectA();
		}else if(type.equals("projectB")){
			return new ProjectB();
		}
		return null;
	} 
	
	
	//-------------   -       -------------------//
	public AbstractProject createProjectA(){	//       ,
		return new ProjectA();
	}
	public AbstractProject createProjectB(){
		return new ProjectB();
	}
	
	
	public static void main(String[] args) {
		SimpleFactory factory = new SimpleFactory();
		factory.create("projectA").printProject();
		factory.create("projectB").printProject();
		
		/*-------   -       -------------*/
		factory.createProjectA().printProject();
		factory.createProjectB().printProject();
	}
}

/*new     ProjectA
new    projectB
new     ProjectA
new    projectB*/