java 디자인 모드 - 구조 모드
2211 단어 java 디자인 모드
JDK의 예: String 클래스.공유할 수 있는 대상은 같은 대상을 사용해서 메모리 공간을 절약할 수 있다.
브리지 Bridge
추상적인 부분과 행위 부분을 분리하여 그것들이 독립적으로 변화할 수 있도록 하다.
예를 들어'사람'은 추상적인 것이다. 예를 들어 사람은'남자','여자'로 나눌 수 있다.사람도'달리기'와 같이 행동하지만 다른 동물도'달리기'라는 행위를 하기 때문에'달리기'라는 행위를'사람'이라는 추상화(즉 추상과 행위의 귀속)로 추상화할 수 없다. 만약에'추상과 행위의 귀속', 행위가'비행'을 추상화한다면'남자 비행','여자 비행', 만약에'여자가 비행을 할 수 없다'는 유형을 더 늘려야 한다.그래서'사람'과'행위'를 추상적으로 두 개의 인터페이스, 어떤 행위가 있고 어떤 인터페이스를 실현해야 한다.
JDK Formatter
프록시 Proxy
이것은 말할 필요도 없고 코드만 올라갈 뿐이다.
//
public interface Subject {
void foo();
}
//
public class SubjectImpl implements Subject {
public void foo() {
System.out.println("foo impl");
}
}
//
public class ProxyHandler implements InvocationHandler {
private Object proxied;
public ProxyHandler( Object proxied )
{
this.proxied = proxied;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// ,
System.out.println("proxy before");
//
Object result = method.invoke( proxied, args);
// ,
System.out.println("proxy after");
return result;
}
}
//
public static void main(String[] args) {
Subject real = new SubjectImpl();
Subject proxySubject = (Subject) Proxy.newProxyInstance(Subject.class.getClassLoader(),
new Class[]{Subject.class},
new ProxyHandler(real));
proxySubject.foo();
}
위의 프록시 구현은 JDK의 반사 방식을 통해 이루어지며,class 바이트 코드를 스스로 고칠 수도 있다. (문자열을 조합해서 이 문자열을 바이트 코드로 컴파일하면 불러온 후에 사용할 수 있다.)
모양새 모드 Facade
서브시스템 중의 한 그룹의 인터페이스에 일치된 인터페이스를 제공하는 것은 바로 많은 서브류의 실현을 통일된 인터페이스로 봉인하는 것이다. 외부 호출은 서브류의 구체적인 실현에 관심을 두지 않고 인터페이스가 그런 기능을 제공하는 것만 알면 된다.전형적인 응용은 바로 데이터베이스 JDBC의 응용이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어댑터(클래스 어댑터, 객체 어댑터 모드)1: 클래스 어댑터 모드 만일 우리가 Person류가 있다면, 이 Person류에는 불고 당기는 방법이 있다.시스템 개발의 절반에 이르러 우리는 이 종류에 두 가지 방법을 더 첨가하여 연주, 당기기, 연주, 노래의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.