Going my way

いいなと思ったことをメモしていきます。

ファクトリパターン超基礎


Advertisements


ファクトリパターンとは
オブジェクト生成を1つの役割とみなし、その機能を分離することである。

具体的には、ファクトリパターンでは、newによるオブジェクト生成をメソッド内に隠蔽する。

package sample2;

public class Main {
	public static void main(String[] args){
		
		//①
		Book book = Book.getInstance();
		
		//②
		//Book book = new Book();
		
		
		book.setName("吾輩は猫である");
		book.sayName();
	}
}

class Book {
	private String name;
	private String author;
	
	//③
	private Book(){}
	
	//④
	static Book getInstance() {
		Book book = new Book();
		return book;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public void setAuthor(String author){
		this.author = author;
	}
	
	public void sayName(){
		System.out.println("book name is " + name);
	}
}

①getInstanceはstaticメソッドであるため、インスタンス化しなくても使用可能

コンストラクタの可視性が「private」であるため、Bookクラスの外ではインスタンス化できない

コンストラクタの可視性をprivateにすることで、クラス外からインスタンス化できなくする

④staticメソッドにすることで、利用する側がインスタンス化しなくても使用できるようにする

実行結果

book name is 吾輩は猫である