Replace Constructor With Factory Method Refactoring  

 

ÀÌ ¼½¼ÇÀº ´ç½Å¿¡°Ô Replace Constructor With Factory Method  ¸®ÆÑÅ丵 ±â´É¿¡ ´ëÇØ Æ÷°ýÀûÀΠ overview¿Í  how  ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ IDEA¿¡¼­ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.

°³¿ä


Replace Constructor With Factory Method  ¸®ÆÑÅ丵 ±â´ÉÀº ´ç½ÅÀÌ ÄÝÀ» ±× Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â Á¤ÀûÀÎ ¸Þ¼Òµå·ÎÀÇ ÄÝ À§ÀÇ »ý¼ºÀÚ·Î ±³Ã¼ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.


¿¹¸¦ µé¸é, ´ç½ÅÀº ´ÙÀ½ÀÇ µÎ Ŭ·¡½º¸¦ °¡Áý´Ï´Ù:

 
public class Connection {
    public Connection(String URL){
        //some code here
    }
}
 
public class ConnectionPool {
    public Connection getConnection(String name){
        Connection conn = new Connection(name);
    }
    //some code here
}

 

¸®ÆÑÅ丵 ÈÄÀÇ ÄÚµå´Â ÀÌ·¸°Ô º¸ÀÏ °ÍÀÔ´Ï´Ù:  
 
private class Connection {
    private Connection(String URL){
        //some code here
    }
 
    public static Connection createConnection(String URL) {
        return new Connection(URL);
    }
}
 
public class ConnectionPool {
    public Connection getConnection(String name){
        Connection conn = Connection.createConnection(name);
    }
    //some code here
}

 
»ý¼ºÀÚ ÄÝÀº Á¤ÀûÀÎ ¸Þ¼Òµå ÄÝ·Î ±³Ã¼µË´Ï´Ù.

»ý¼ºÀÚ¸¦ ÆÑÅ丮 ¸Þ¼Òµå·Î ±³Ã¼


»ý¼ºÀÚ¸¦ ÆÑÅ丮 ¸Þ¼Òµå·Î ±³Ã¼Çϱâ À§Çؼ­:

 1.   ´ç½ÅÀº ÀνºÅϽº°¡ ÀÚÁÖ »ý¼ºµÇ´Â Ŭ·¡½º¸¦ °¡Áú Çʿ䰡 ÀÖ½À´Ï´Ù.

 2.   Ä³·µÀ» ÆÑÅ丮 ¸ðµå·Î ±³Ã¼µÉ »ý¼ºÀÚ À§¿¡¼­ ¼³Á¤ÇÏ°í ¸ÞÀÎ ¸Þ´º¿¡¼­ ¶Ç´Â ¿¡µðÅÍ¿¡¼­ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º¿¡¼­ Refactor Replace Constructor With Factory Method...¸¦ Ŭ¸¯ÇϽʽÿÀ

 3.   ´ç½ÅÀº Replace Constructor With Factory Method  ´ÙÀ̾ó·Î±×¸¦ º¸°Ô µÉ  °ÍÀÔ´Ï´Ù.

À̸§

ÆÑÅ丮 ¸Þ¼Òµå¿¡ ´ëÇØ IDEA¿¡ ÀÇÇØ Á¦¾ÈµÈ Çϳª¸¦ ¼±ÅÃÇϰųª ´ç½Å ÀÚ½ÅÀÇ À̸§À» ÀÔ·ÂÇϽʽÿÀ.

In (fully  qualified name)  

ÆÑÅ丮 ¸Þ¼Òµå°¡ À§Ä¡µÇ´Â ÃæºÐÈ÷ ÀÚ°ÝÀÌ ÁÖ¾îÁø Ŭ·¡½º À̸§À» ÀÔ·ÂÇϽʽÿÀ.  ¶Ç ´Ù¸¥ ¹æ¹ýÀº ÇÊ¿äÇÑ Å¬·¡½º¸¦ ellipsis ¹öưÀ» ´­·¯¼­ ºÒ·ÁÁö´Â Choose Destination Class ´ÙÀ̾ó·Î±×¿¡¼­ ã´Â °Í ÀÔ´Ï´Ù.

º¯°æµÈ ¹Ì¸® º¸±â »ç¿ë

üũ ¹Ú½º¸¦ ¼±ÅÃÇÏ¸é ´ç½Å¿¡°Ô ¾î¶² »ç¿ëÀÌ ¹ß°ßµÇ¾ú´ÂÁö °è¼Ó ±â¾ïÇϰí ÀÖ°í, ±×µéÀÇ ±³Ã¼¸¦ ½ÂÀÎÇϵµ·Ï Çã¶ôÇÕ´Ï´Ù. ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ» ¶§, IDEA´Â ±³Ã¼¸¦ ÀÚµ¿ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù.


½ÉÁö¾î üũ ¹Ú½º°¡ È®ÀεÇÁö ¾Ê¾ÒÀ» ¶§µµ, ¸¸ÀÏ ¹ß°ßµÈ »ç¿ëÀÌ ¾î¶² Àбâ Àü¿ë ÆÄÀÏ¿¡¼­ Á¸ÀçÇÏ¸é ´ç½Å¿¡°Ô »ç¿ë ±³Ã¼¸¦ È®ÀÎÇϱâ À§ÇØ ÇÁ·ÒÇÁÆ® µÉ °Í ÀÔ´Ï´Ù.


Refactoring Preview ´ÙÀ̾ó·Î±×¿¡¼­ (¸¸ÀÏ ±×°ÍÀÌ ³ªÅ¸³ª¸é) ´ç½ÅÀº ¼öÇàµÈ º¯°æÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù.  ¸®ÆÑÅ丵°ú ÇÔ²² ÁøÇàÇϱâ À§Çؼ­, Do Refactor¸¦ Ŭ¸¯ÇÕ´Ï´Ù±×·¸Áö ¾Ê´Ù¸é Cancel À» Ŭ¸¯ÇÕ´Ï´Ù. »ó¼¼ÇÑ °ÍÀ» º¸·Á¸é Refactoring Preview¸¦ º¸½Ê½Ã¿À.

 

Ưº°ÇÑ ÁÖ¼®


¸®ÆÑÅ丵À» Àû¿ëÇϸ鼭 ´ç½ÅÀº ´ÙÀ½À» ¾Ë¾Æ¾ß ÇÕ´Ï´Ù:

 1.  »õ·Î¿î ÆÑÅ丮 ¸Þ¼Òµå´Â »ý¼ºÀÚÀÇ °Í°ú ¶È°°Àº °¡½Ã¼ºÀ» ¾ò½À´Ï´Ù.

 2.   »ý¼ºÀÚ´Â ÆÑÅ丮 ¸Þ¼Òµå(¿¹¸¦ µé¸é, private  ¸¸ÀÏ ¾çÂÊÀÌ ÇÑ Å¬·¡½º ³»¿¡ À§Ä¡ÇÑ´Ù¸é)¿¡ ÀÇÇØ ¾×¼¼½º °¡´ÉÇÑ ÃÖ¼ÒÀÇ °¡½Ã¼ºÀÌ ÁÖ¾îÁý´Ï´Ù.

 3.   ÀϺΠƯº°ÇÑ À̽´´Â ³»ºÎ Ŭ·¡½º¿Í °ü°è°¡ ÀÖ½À´Ï´Ù.  ÆÑÅ丮 ¸Þ¼Òµå´Â ¿ÜºÎ Ŭ·¡½º ÁßÀÇ ÇÑ °³¿¡¼­¸¸ »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù.