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의 응용이다.

좋은 웹페이지 즐겨찾기