디자인 모델 빠 른 학습 (2) 추상 공장 모델
데모 에 직접 올 라 갑 니 다. 먼저 코드 를 입력 하고 나중에 소개 합 니 다.
만약 이전에 공장 모델 을 보지 못 했다 면 아래 의 타 임 머 신 으로 전송 하 세 요. 사상 적 기반 뿐만 아니 라 주로 변화 하 는 과정 을 알 아야 합 니 다.디자인 모델 빠 른 학습 (1) 공장 모델
1. 인터페이스 Shape 작성
Shape.java
public interface Shape {
void draw();
}
2. 인터페이스 Shape 의 구현 클래스 Rectangle 작성
Rectangle.java
/**
* Created by Fant.J.
*/
public class Rectangle implements Shape {
@Override
public void describe() {
System.out.println(" ");
}
}
3. 인터페이스 Shape 의 구현 클래스 Circle 작성
Circle .java
/**
* Created by Fant.J.
*/
public class Circle implements Shape {
@Override
public void describe() {
System.out.println(" ");
}
}
4. 인터페이스 컬러 작성
Color .java
/**
* Created by Fant.J.
*/
public interface Color {
void fill();
}
5. 인터페이스 Color 의 구현 클래스 Red 작성
Red .java
/**
* Created by Fant.J.
*/
public class Red implements Color {
@Override
public void fill() {
System.out.println(" ");
}
}
6. 인터페이스 Color 의 구현 클래스 Green 작성
Green .java
/**
* Created by Fant.J.
*/
public class Green implements Color {
@Override
public void fill() {
System.out.println(" ");
}
}
7. Color 와 Shape 대상 에 추상 클래스 를 만들어 공장 을 가 져 옵 니 다.
/**
* Created by Fant.J.
*/
public abstract class AbstractFactory {
abstract Color getColor(String color);
abstract T getShape(Class clazz) ;
}
8. AbstractFactory 공장 클래스 를 확장 (계승) 하여 실체 클래스 Shape 의 대상 을 생 성 할 수 있 도록 합 니 다.
ShapeFactory .java
/**
* Created by Fant.J.
*/
public class ShapeFactory extends AbstractFactory {
@Override
public Color getColor(String color) {
return null;
}
@Override
T getShape(Class clazz) {
T obj = null;
try {
obj = clazz.getDeclaredConstructor().newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return obj;
}
}
9. AbstractFactory 공장 클래스 를 확장 (계승) 하여 실체 클래스 Color 의 대상 을 생 성 할 수 있 도록 합 니 다. 약
10. 공장 생 성 기 를 만 들 고 Shape 나 Color 공장 을 만 드 는 데 사용 합 니 다.
FactoryProducer .java
/**
* Created by Fant.J.
*/
public class FactoryProducer {
public static AbstractFactory getFactory(String choice){
if(choice.equalsIgnoreCase("SHAPE")){
return new ShapeFactory();
} else if(choice.equalsIgnoreCase("COLOR")){
// , ColorFactory
return null;
}
return null;
}
}
11. 테스트
/**
* Created by Fant.J.
*/
public class Test {
public static void main(String[] args) {
// ,
AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");
shapeFactory.getShape(Circle.class).describe();
}
}
총결산
이 실현 은 매우 복잡 해 보인다. 나 는 대략적인 사고방식 을 정리 했다. 우선, 우 리 는 공장 생 성 기 를 통 해 추상 적 인 공장 류 를 생 성 한 다음 에 추상 적 인 공장 류 의 확장 류 (하위) 방법 을 호출 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.