Gridge Pattern
- Bridge는 인터페이스를 통해 서브시스템을 격리 시킨다. 이는 한 서브시스템의 변화가 다른 서브시스템에 영향을 미치는 것을 막아준다.
- Facade 패턴의 주요 목적은 '단순화'이며 , 서브시스템을 격리시키지는 않는다.
1. Peer Class들은 java.awt.Toolkit라는 Abstract Factory를 사용하여 런타임에 생성된다.
2. Java.awt.Window 클래슨 Toolkit과 Peer에 대해서 알고 있다. Window를 생성할 때 window 객체를 적절한 peer를 생성하게 된다.
Window의 객체의 관점에서 프로그래밍 한다면 어떠한 Peer가 있는지에 대해서 전혀 알필요가 없다.
=> 결과적으로 브리짓의 다른 측면에 있는 것들(모든 Peer)은 심지어 런타임에도 바뀔 수 있으며, 이러한 변화는 브리지의 다른 쪽에는 영향을 미치지 않는다. 마찬가지로 , 피어 구현 중 어떤 것도 자신이 어떻게 사용되고 있는지에 대해 알지 못한다.
public final class Database
{
public Database() { }
public Database( File path, Table[] database ) throws IOException
{ useDatabase( path );
for( int i = 0; i < database.length; ++i )
tables.put( database[i].name(), database[i] );
}
public void createTable( String name, List columns )
{
String[] columnNames = new String[ columns.size() ];
int i = 0;
for( Iterator names = columns.iterator(); names.hasNext(); )
columnNames[i++] = (String) names.next();
Table newTable = TableFactory.create(name, columnNames);
tables.put( name, newTable );
}
public void dropTable( String name )
{ tables.remove( name ); // ignore the error if there is one.
File tableFile = new File(location,name);
if( tableFile.exists() )
tableFile.delete();
}
}
Database와 Table은 Bridge를 구성한다. Table 인터페이스는 다양한 Table 구현체를 은닉시켜 준다.
그리고 TableFactory는 다양한 Table 구현체 중 하나를 선택하여 사용할 수 있도록 해준다.
Database 관점에서 보면 데이타 저장 서브시스템(Table 측)의 변화가 Table 인터페이스를 통해서 은닉된다.