가상 공장 - 간단한 설명

1782 단어 java 디자인 모드
일련의 관련 또는 상호 의존 대상을 만드는 인터페이스를 제공하여 구체적인 유형을 지정할 필요가 없다. 추상 공장과 공장 모델의 차이는 대상의 실례화에 있다. 공장 모델은 하위 클래스에 맡겨 처리하고 추상 공장은 아니다. 그는 방법을 통해 대상을 되돌려주는 실례이다.
해당되는 경우:
1. 하나의 시스템이 제품의 생성, 조합 및 표현에 독립해야 할 때.2. 여러 제품 라인 중 하나로 시스템을 구성해야 하는 경우3. 연합 사용을 위해 일련의 관련 제품 대상의 디자인을 강조해야 할 때.4. 제품 라이브러리를 제공하고 인터페이스만 표시하고 싶을 때.
interface IAnimalFactory{
	ICat createCat();
	IDog createDog();
}
class BlackAnimalFactory implements IAnimalFactory{
	public ICat createCat(){
		return new BlackCat();
	}
	public IDog createDog(){
		return new BlackDog();
	}

}

class WhiteAnimalFactory implements IAnimalFactory{
	public ICat createCat(){
		return new WhiteCat();
	}
	public IDog createDog(){
		return new WhiteDog();
	}
}

interface ICat{
	void eat();
}
interface IDog{
	void eat();
}
class BlackCat implements ICat{
	
	public void eat() {
		System.out.println("Black cat is eating");
	}
}
class WhiteCat implements ICat{
	public void eat(){
		System.out.println("White cat is eating ");
	}
}

class BlackDog implements IDog{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("Black dog is eating");
	}
	
}
class WhiteDog implements IDog{
	public void eat(){
		System.out.println("White dog is eating ");
	}
}
public class AbstractFactory {
	public static void main(String[] args) {
		IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();
		ICat blackCat = blackAnimalFactory.createCat();
		blackCat.eat();
		blackAnimalFactory.createDog().eat();
		IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
		whiteAnimalFactory.createCat().eat();
		whiteAnimalFactory.createDog().eat();
	}
	
}

결과:
Black cat is eating Black dog is eating White cat is eating  White dog is eating

좋은 웹페이지 즐겨찾기