デザインモードFacade Pattern
5572 ワード
1. Facade Pattern
複数のオブジェクトを組み合わせて特定の機能を作成するには
2.テスト項目
01.Facadeアプリケーション前
package com.company.design.facade;
public class Ftp {
private String host;
private int port;
private String path;
public Ftp(String host, int port, String path) {
this.host = host;
this.port = port;
this.path = path;
}
public void connect() {
System.out.println("FTP HOST : "+host+" Port : "+port+" 로 연결 합니다.");
}
public void moveDirectory() {
System.out.println("path : "+path+"로 이동 합니다.");
}
public void disConnect() {
System.out.println("FTP 연결을 종료 합니다");
}
}
package com.company.design.facade;
public class Reader {
private String fileName;
public Reader(String fileName) {
this.fileName = fileName;
}
public void fileConnect() {
String msg = String.format("Reader %s로 연결 합니다.", fileName);
System.out.println(msg);
}
public void fileRead() {
String msg = String.format("Reader %s의 내용을 읽어 옵니다.", fileName);
System.out.println(msg);
}
public void fileDisConnector() {
String msg = String.format("Reader %s로 연결 종료 합니다.", fileName);
System.out.println(msg);
}
}
package com.company.design.facade;
public class Writer {
private String fileName;
public Writer(String fileName) {
this.fileName = fileName;
}
public void fileConnect() {
String msg = String.format("WRITER %s로 연결 합니다.", fileName);
System.out.println(msg);
}
public void fileDisConenct() {
String msg = String.format("WRITER %s로 연결 종료 합니다.", fileName);
System.out.println(msg);
}
public void write() {
String msg = String.format("WRITER %s로 파일 쓰기를를 합니.", fileName);
System.out.println(msg);
}
}
package com.company.design;
import com.company.design.facade.Ftp;
import com.company.design.facade.Reader;
import com.company.design.facade.Writer;
public class Main {
public static void main(String[] args) {
Ftp ftpClient = new Ftp("www.foo.co.kr", 22, "/home/etc");
ftpClient.connect();
ftpClient.moveDirectory();
Writer writer = new Writer("text.tmp");
writer.fileConnect();
writer.write();
Reader reader = new Reader("text.tmp");
reader.fileConnect();
reader.fileRead();
reader.fileDisConnect();
writer.fileDisConenct();
ftpClient.disConnect();
}
}
02.Facade適用後
package com.company.design.facade;
public class SftpClient {
private Ftp ftp;
private Reader reader;
private Writer writer;
public SftpClient(Ftp ftp, Reader reader, Writer writer) {
this.ftp = ftp;
this.reader = reader;
this.writer = writer;
}
public SftpClient(String host, int port, String path, String fileName) {
this.ftp = new Ftp(host, port, path);
this.reader = new Reader(fileName);
this.writer = new Writer(fileName);
}
public void connect() {
ftp.connect();
ftp.moveDirectory();
writer.fileDisConenct();
reader.fileConnect();
}
public void disConnect() {
writer.fileDisConenct();
reader.fileDisConnect();
ftp.disConnect();
}
public void read() {
reader.fileRead();
}
public void write() {
writer.write();
}
}
package com.company.design;
import com.company.design.facade.Ftp;
import com.company.design.facade.Reader;
import com.company.design.facade.SftpClient;
import com.company.design.facade.Writer;
public class Main {
public static void main(String[] args) {
Ftp ftpClient = new Ftp("www.foo.co.kr", 22, "/home/etc");
ftpClient.connect();
ftpClient.moveDirectory();
Writer writer = new Writer("text.tmp");
writer.fileConnect();
writer.write();
Reader reader = new Reader("text.tmp");
reader.fileConnect();
reader.fileRead();
reader.fileDisConnect();
writer.fileDisConenct();
ftpClient.disConnect();
System.out.println("\n-------------------\n");
SftpClient sftpClient = new SftpClient("www.foo.co.kr", 22, "/home/etc", "text.tmp");
sftpClient.connect();
sftpClient.write();
sftpClient.read();
sftpClient.disConnect();
}
}
Reference
この問題について(デザインモードFacade Pattern), 我々は、より多くの情報をここで見つけました https://velog.io/@ansalstmd/디자인패턴-7.-Facade-Patternテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol