디비생성프로그램 프로토타입 [디자인패턴] 패턴 Pattern) (Prototype

*Market Db 프로그램
Market Db는 프로그램기반으로 구동되며
3대오픈마켓 판매 사업자들의 정보를 얻을수 있는 디비생성프로그램 으로서
상호/ 대표번호 / 주소 / 핸드폰 번호 수집등의 기능으로 99%이상의 유효 디비생성프로그램 으로 활용 가능하십니다
 오픈마켓 사업자들의 샵, 이메일, 주소, 연락처, 법인(개인) 사업자 정보 를 통해서 필터링 되는만큼 온라인 유통업체, 홈페이지 제작업체, 마케팅 업체등 다양한 업종의 영업에 적재적소로 활용할수 있는 필수적인 디비생성프로그램입니다.
*마케팅몬스터 구매 문의
☏ 카카오톡 aramis0104
☏ HP 010-7424-0013
☏ 오픈채팅 https://open.kakao.com/o/s4CWZYH
                          ☏ 프로그램 상세보기 https://marketingmonster.kr/detail.siso?CODE=68                                                                                               
☏ 프로그램 구동영상 https://youtu.be/FK_v7liC54w



전문적토타입(본보기) 도형 :- 생산적인 디자인 도형 중 낱이다. – 클래스로부터 인스턴스를 만들지 않고, 인스턴스를 카피하여 새로운 인스턴스를 만든다. – 객관 생성실 경비이 높거나 뒤숭숭하다 경우 전문적토타입 도형을 통해 쉽게 새로운 인스턴스를 생성할 수 있다. 소스 : https://ko.

wikipedia. org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85_%ED%8C%A8%ED%84%B4#/media/File:Prototype_도형_ZP. svg 그럭저럭 위 도면에서 Prototype 인터페이스를 규격으로 두아지 Concrete Prototype 클래스가 구현되는걸 알 수 있다. 이건 Prototype 도형이 꼭 낱의 인터페이스를 두고 그걸 구현하도록 해야한다는건 아니다.

클라이언트와 Prototype 인스턴스 간의 의지도를 낮추고 어느새든 딴 인스턴스로 바꿔 이용할 수 있게끔 하기 가해 위와 같이 이용하는 것이다. 왜 이용하는가?전문적토타입 도형이 왜 이용되는지 예를 보자. 예를 들어, 하여 객관를 만들때 디비에 결합해서 데이터를 가져온다던지, 아니면 객관를 만든후 객관 전문적퍼티에 값을 배분하고 여러아지 세팅을 해줘야 하는 등의 복잡한 (경비이 많이 드는) 경로이 필요하다고 결점. 여혹 매양 객관를 생성할 때마다 이런 경로을 진행한다면 보조 비하, 서버 부담 등의 색이 나타날수도 있다.

이럴때 전문적토타입 도형을 이용할 수 있다. 코드를 보자. public class Users implements Cloneable {private 가격표 user가격표;public Users() {user가격표 = new Array가격표();}public Users(가격표 가격표) {this. user가격표 = 가격표;}public void loadData () {// DB 결합 및 데이터 로드하여 리스트에 세팅user가격표.

add(“ssw”);user가격표. add(“bjh”);user가격표. add(“ysm”);user가격표. add(“hoj”);}public 가격표 getUser가격표() {return user가격표;}@Overridepublic Object clone() throws CloneNotSupportedException {가격표 temp = new Array가격표();for (String s : this.

getUser가격표()) {temp. add(s);}return new Users(temp);}}public class main {public static void main(String[] args) throws Exception {Users originUsers = new Users();originUsers. loadData();Users cloneUsers = (Users)originUsers. clone();}}위 코드에서처럼 객관를 생성하고 loadData() 메소드를 초출할때 디비에 인접한다고 해보자(당연히 디비에 의해 데이터가 개변될 수 있겠지만, 이곳서는 개변이 없는 데이터라고 여염집결점).

새로운 객관를 만들때마다 위 경로을 하지 않고, 전문적토타입 도형을 통해 일차 생성된 인스턴스를 카피하여 이용하고 있다. 디비의 부담를 줄이면서 전문적그램의 보조 또 빨리질 것으로 예상할 수 있다. 이용 노하우카피하고 싶은 인스턴스의 클래스에서 Cloneable 인터페이스를 구현하도록 한다. 그리고 클래스에서 clone() 메소드를 오버코트라이딩 해주면 된다.

감안Cloneable 인터페이스를 구현하지 않은 클래스의 인스턴스에서 clone() 메소드를 이용할 경우 CloneNotSupportedException이 발생한다. 그런데, Cloneable인터페이스를 구현하지 않은 클래스에서 어떻게 clone() 메소드를 이용 가능한가? clone() 메소드는 java. lang. Object 클래스에 정당되어 있는 메소드다.

그러므로 온갖 하위 클래스들은 clone() 메소드를 아지고 있다. 하지만, Cloneable 인터페이스를 implements한 클래스만 clone 메소드를 이용가능하도록 디자인되어 있다(이렇다 인터페이스를 maker interface라 한다).  또 한아지 경고하다 점은 clone 메소드에 의해 이루어지는 카피는 필드의 내역을 그냥 카피한다는 것이다. 필드가 순진값일 때는 상관없지만, 필드가 인스턴스 혹은 참호값일 경우에는 단순히 천박하다 카피가 이루어지기 까닭에 문가 될수 있다.

그러므로 이렇다 국부까지도 고려하여 clone 메소드를 오버코트라이드 해줘야 한다. – Cloneable 인터페이스와 clone() 메소드에 창해 더 깊게 알아보기 .

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다