자바 고전 23 가지 디자인 모델 의 창조 형 모델(1)
5072 단어 디자인 모드
공장 방법
공장 방법 은 네 가지 개념 에 관련 되 어 있 으 며,통속 적 인 이 해 를 위해 먼저 인터넷 의 예 를 빌려 사용한다.남 자 는 여 자 를 데 리 고 KFC 에 가서 밥 을 먹 는데 남 자 는 먼저 햄버거 를 달라 고 하 는데 구체 적 으로 어떤 햄버거 를 MM 에 게 말 하 라 고 합 니까?개인 적 으로 이 예 가 적절 하지 않 아 오 해 를 사기 쉽다 고 생각한다.가장 간단 한 예 는 공장 마다 특정 제품 을 생산 할 수 있 는 공장 이 많다 는 것 이다.명확 한 이 해 를 위해 자바 디자인 모델(미 친 자바 연맹 버 전)을 결합 해 소개 한다.
1.제품 은 제품 이 고 인터페이스 입 니 다.구체 적 으로 무엇 을 하 는 지 말 하지 않 았 습 니 다.
public interface Work { void doWork();}
2.Concrete 제품,구체 적 인 제품.위의 공 통 된 워 크 인 터 페 이 스 를 실현 하지만 다른 일 을 하 는 것 이다.같은 일 을 하 는 것 은 당연히 하나의 개념 이다.
public class StudentWork implements Work { public void doWork() { System.out.println("학생*숙제!"); }}public class TeacherWork implements Work { public void doWork() { System.out.println("선생님 이 숙제 를 승인 합 니 다!"); }}
여기 서 두 가지 구체 적 인 제품 을 정 의 했 는데 학생 들 의 업 무 는 바로 숙제 이 고 선생님 의 업 무 는 바로 심사 비준 숙제 이다.
3.Creator,창조 기.위의 제품 과 대응 하여 Creator 의 목적 은 바로 제품 을 얻 고 제품 을 얻 는 것 이다.
public interface IWorkFactory { Work getWork();}
4.ConcreteCreator,구체 적 인 창조 기.창조 기 가 Work 를 얻 으 면 모든 구체 적 인 제품 이 요 구 를 만족 시 킵 니 다.모든 제품 을 한 공장 에 밀봉 하 다.
public class StudentWorkFactory implements IWorkFactory { public Work getWork() { return new StudentWork(); }}public class TeacherWorkFactory implements IWorkFactory { public Work getWork() { return new TeacherWork(); }}
테스트 코드 는 다음 과 같 습 니 다:
public class Test { public static void main(String[] args) { IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().doWork(); IWorkFactory teacherWorkFactory = new TeacherWorkFactory(); teacherWorkFactory.getWork().doWork(); }}적용 성:
1.만들어 야 할 대상 의 종 류 를 모 를 때. 2.클래스 가 만 든 대상 을 하위 클래스 에서 지정 하고 싶 을 때. 3.창설 대상 의 직책 을 여러 도움말 클래스 중 하나 에 맡 기 고 어떤 도움말 클래스 가 대리자 라 는 정 보 를 국부 화 하 기 를 원할 때.
추상 공장
위의 예 가 있 으 면 추상 적 인 공장 을 잘 이해 할 수 있다.예 를 들 어 상점 에 가서 물건 을 사면 상점 이 Factory 입 니 다.원 하 는 것 을 직접 말 하면 점원 이 가 져 다 줍 니 다.
위의 예 를 들 어 하나의 WorkFactory 를 정의 하여 IWorkFactory 인 터 페 이 스 를 실현 하고 WorkFactory 에 하나의 인 자 를 전달 하 며 매개 변수 에 따라 new student Work 인지 TeacherWork 인지 판단 한 다음 에 return 합 니 다.이것 이 바로 추상 공장 이다.이것 은 가장 간단 하고 솔직 한 이해 다.명확 한 이 해 를 위해 복잡 한 예 를 하나 더 첨부 하 겠 습 니 다.
1.추상 제품 추상 제품
public interface ICat { void eat();}public interface IDog { void eat();}
2.Concrete 제품 의 구체 적 인 제품
public class BlackCat implements ICat { public void eat() { System.out.println("The black cat is eating!"); }}public class WhiteCat implements ICat { public void eat() { Sy*tem.out.prin*ln("The w*ite cat is eating!*); }}
public class BlackDog implements IDog { public void eat() { System.out.println("The black dog is eating"); }}public class WhiteDog implements IDog { public void eat() { System.out.println("The white dog is eat*ng!"); }}
3.Abstract Factory 추상 적 인 공장,인터페이스.
public interface IAnimalFactory { ICat createCat(); IDog createDog();}
4、
Concrete Factory 의 구체 적 인 공장 은 위의 인 터 페 이 스 를 실현 합 니 다.
public class BlackAnimalFactory implements IAnimalFactory { public ICat createCat() { return new BlackCat(); } public IDog createDog() { return new BlackDog(); }}public class WhiteAnimalFactory imp*ements IAnimalFactory { public ICat createCat() { return new WhiteCat(); } public IDog createDog() { return new WhiteDog(); }}
테스트 코드:
public static void main(String[] args) { IAnimalFactory blackAnimalFactory = new BlackAnimalFactory(); ICat blackCat = blackAnimalFactory.createCat(); blackCat.eat(); IDog blackDog = blackAnimalFactory.createDog(); blackDog.eat(); IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory(); ICat whiteCat = whiteAnimalFactory.createCat(); whiteCat.eat(); IDog whiteDog = whiteAnimalFactory.createDog(); whiteDog.eat();}
주:이 복잡 한 예 를 볼 수 있 습 니 다.인터페이스 로 공장 이 서로 다른 수요 에 따라 서로 다른 제품 을 만 들 었 고 간단 한 예 는 매개 변수 로 서로 다른 제품 을 확정 하 는 것 입 니 다.
사용 장소:
1.하나의 시스템 이 제품 의 생 성,조합 과 표시 에 독립 해 야 할 때.2.하나의 시스템 이 여러 제품 시리즈 중 하나 로 설정 되 어야 할 때.3.일련의 관련 제품 대상 의 디자인 을 강조 하여 공동으로 사용 할 때*4 제품 라 이브 러 리 를 제공 하고 실현 이 아 닌 인 터 페 이 스 를 표시 하려 고 할 때.
3.단일 모드
이런 모델 은 비교적 많이 사용 되 는데 박문 을 참고 하여 이에 대해 매우 명확 하 게 말 하면 나 는 다시 말 하지 않 겠 다.
요점:
1.스 레 드 호출 의 안전성 을 위해 동기 잠 금 을 추가 하고 효율 적 인 이중 잠 금 을 사용 하 는 것 이다.
2.이런 전형 적 인 사례 를 제외 하고 다른 사례 도 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.