디자인 모델 15 - 향 원 모델
code…
스포츠 용품 마다 기능 이 같 기 때문에 스포츠 용품 은 공유 되 지만 스포츠 용품 을 사용 하 는 사람 은 다르다.스포츠 용품 의 기본 유형:
public interface ShareSport {
public void sport(User user);
}
탁구 의 실현 유형:
public class PingPang implements ShareSport {
@Override public void sport(User user) {
System.out.println(user.getName()+" ");
}
}
다른 두 실현 류 는 이와 유사 하 다.공장 류 는 어떤 스포츠 용품 이 있 으 면 바로 되 돌려 주 고, 이것 이 없 으 면 반 사 를 통 해 하 나 를 새로 만 든 다음 hashmap 에 추가 한 후 되 돌려 줍 니 다.
public class Factory {
private HashMap hashMap=new HashMap<>();
public ShareSport createObject(String string)
{
if(!hashMap.containsKey(string)) {
ShareSport obj = null;
try {
string = "com.Flyweight." + string;
Class clazz = Class.forName(string);
obj = (ShareSport) clazz.newInstance();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
hashMap.put(string, obj);
}
return hashMap.get(string);
}
사용자 클래스:
public class User {
private String name;
// 、get、set
}
main 방법:
public class Main {
public static void main(String[] args) {
Factory factory=new Factory();
ShareSport pingpang=factory.createObject("PingPang");
pingpang.sport(new User("Yang"));
ShareSport pingpang2=factory.createObject("PingPang");
pingpang.sport(new User("Song"));
ShareSport valleyball=factory.createObject("Valleyball");
valleyball.sport(new User("Yang"));
factory.getSize();
}
}
이 인 스 턴 스 에서 User 는 외부 상태 로 볼 수 있 고 운동 기 구 는 내부 상태 로 볼 수 있다.내부 상 태 는 공유 할 수 있다.디자인 에서 많은 대상 이 소수의 매개 변 수 를 제외 하고 모두 같은 것 을 발견 하면 소수의 매개 변 수 를 클래스 로 분리 하고 같은 부분 을 공유 할 수 있다.호출 방법 이 있 을 때 매개 변 수 를 다시 입력 합 니 다.예 를 들 어 상례: 탁구 한 자루 를 손 에 넣 을 필요 가 없고 몇 점 을 사서 모두 가 공유 할 수 있 으 며 농 구 를 해 야 하 는데 없 을 때 다시 사 야 한다.누가 탁 구 를 치 든 탁구 의 역할 은 모두 맞 는 것 이다.때 리 는 사람 이 다르다 는 것 을 보 여 주 려 면 호출 방법 은 사용 자 를 전송 하 는 것 이다.
전편
---The End---
다음 편
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Article-No.01 향원 모드1) GoF가 형원 모델에 대한 설명은 공유 기술을 활용하여 대량의 세립도를 효과적으로 지원하는 대상이다. Flyweight 모드는 다른 유사한 대상과 데이터를 공유함으로써 메모리 사용을 줄이는 구조 모드 중 하나이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.