๋จผ์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๊ฐ ๋ญ์ง ์ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ์๋ ํฌ์คํ ์ ๋ณด๊ณ ์ค์!
1. ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.
BigInteger ํด๋์ค๋ฅผ ์๋ฅผ ๋ค์ด ๋ณด๋ฉด ์์ฑ์์ธ BigInteger(int, int, Random)๊ณผ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ธ probablePrime(int, Random) ์ค ํ์๊ฐ ๋ฉ์๋ ๋ช ๋๋ถ์ '๊ฐ์ด ์์์ธ BigInteger๋ฅผ ๋ฐํํ๋ค'๋ผ๋ ์๋ฏธ๋ฅผ ํ์ ํ๊ธฐ ์ฝ๋ค.
BigInteger bigInteger = new BigInteger(int, int, Random);
public BigInteger(int bitLength, int certainty, Random rnd) {
BigInteger prime;
if (bitLength < 2)
throw new ArithmeticException("bitLength < 2");
prime = (bitLength < SMALL_PRIME_THRESHOLD
? smallPrime(bitLength, certainty, rnd)
: largePrime(bitLength, certainty, rnd));
signum = 1;
mag = prime.mag;
}
BigInteger bigInteger = BigInteger.probablePrime(int, Random);
public static BigInteger probablePrime(int bitLength, Random rnd) {
if (bitLength < 2)
throw new ArithmeticException("bitLength < 2");
return (bitLength < SMALL_PRIME_THRESHOLD ?
smallPrime(bitLength, DEFAULT_PRIME_CERTAINTY, rnd) :
largePrime(bitLength, DEFAULT_PRIME_CERTAINTY, rnd));
}
์ด๋ ๊ฒ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ ๋ค์ด๋ฐ๋ง ์ ์ง๋๋ค๋ฉด ์ง๊ด์ ์ผ๋ก ํํํ ์ ์์ด์ ์๋ฑํ ๊ฒ์ ํธ์ถํ๋ ์ค์๋ฅผ ์ค์ผ ์ ์๋ค.
Boolean.logicalOr(boolean a, boolean b);
Boolean.logicalAnd(boolean a, boolean b);
๋ฐ๋ฉด ์์ฑ์๋ ์์ฑ์์ ํน์ฑ ํ์ ์ด ํ์ํ๋ฉฐ, ์๊ทธ๋์ฒ๊ฐ ๋์ผํ ๊ฒ(๋ฉ์๋ ๋ช , ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๊ฐ ๋์ผํ ๊ฒ)์ ์ค๋ณตํด์ ์ฌ์ฉํ ์ ์๋ค.
2. ํธ์ถ๋ ๋๋ง๋ค ์ธ์คํด์ค๋ฅผ ์๋ก ์์ฑํ์ง ์์๋ ๋๋ค.
๋ถ๋ณ ํด๋์ค์ ๊ฒฝ์ฐ ์ธ์คํด์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ฑฐ๋ ์๋ก ์์ฑํ ์ธ์คํด์ค๋ฅผ ์บ์ฑํ๊ณ , ์ฌํ์ฉํ์ฌ ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ ์ ์๋ค.
์๋ฅผ ๋ค์ด Boolean.valudOf(boolean) ์ ๊ฐ์ฒด๋ฅผ ์์ ์์ฑํ์ง ์๋๋ค. ์๋๋ Boolean ํด๋์ค์ ์ผ๋ถ์ด๋ค.
public final class Boolean implements java.io.Serializable,Comparable<Boolean> {
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
}
๋น์ฉ์ด ํฌ๊ณ , ๊ฐ์ฒด๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์์ฃผ ํธ์ถ๋๋ ์ํฉ์ด๋ผ๋ฉด ์ฑ๋ฅ๋ ๊ฐ์ ๋๋ค. (ํ๋ผ์ด์จ์ดํธ ํจํด๊ณผ ์ ์ฌ)
๋ถ๋ณ์ด๊ณ , ์์ฃผ ์ฌ์ฉ๋๋ค๋ฉด ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ์์ผ๋ก ์ฝ๋ฉํ์!
3. ๋ฐํ ํ์ ์ ํ์ ํ์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค.
public class Parent {
public Parent(){}
public static Parent getChildInstance() {
return Child.getInstance();
}
}
public class Child extends Parent{
private Child(){}
public static Child getInstance() {
return new Child();
}
}
๋ฐํํ ๊ฐ์ฒด ํด๋์ค๋ฅผ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ด ์ ์ฐ์ฑ์ด ์ ๊ณต๋๋ค.
์ด๋ฅผ ์์ฉํ๋ฉด API๋ฅผ ๋ง๋ค ๋ ๊ตฌํ ํด๋์ค(Child)๋ฅผ ๊ณต๊ฐํ์ง ์๊ณ , Parent๋ฅผ ํตํด ๋ฐํํ ์ ์์ด์ API๋ฅผ ์๊ฒ ๋ง๋ค ์ ์๋ค.
4. ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋งค๋ฒ ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ ์ ์๋ค.
static class CARD{
public static final String SAMSUNG_CARD = "์ผ์ฑ";
public static final String KAKAO_CARD="์นด์นด์ค";
static Payment payment(String card){ // ๋ค์ด์ค๋ card ์ ๊ฐ ์ ๋ฐ๋ผ ๋ฐํํ๋ ๊ฐ์ฒด๊ฐ ๋ค๋ฅด๋ค
switch (card){
case SAMSUNG_CARD:
return new SamSungPayment();
case KAKAO_CARD:
return new KakaoPayment();
}
throw new IllegalArgumentException();
}
}
์ด ๋ถ๋ถ์ ์ค๋ช ํ๊ธฐ ์ํ ์์ ๊ฐ ๋ ์ค๋ฅด์ง ์์ ๋ค๋ฅธ ์ฌ๋์ ํฌ์คํ ์์ ๋ฐ์ทํ์๋ค. (์ถ์ฒ : https://k3068.tistory.com/)
SamSungPayment์ KakaoPayment ํด๋์ค๋ Payment ํด๋์ค๋ฅผ ์์๋ฐ์ ์ํ์ด๋ค.
5. ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ์์ ์๋ ๋ฐํํ ๊ฐ์ฒด์ ํด๋์ค๊ฐ ์กด์ฌํ์ง ์์๋ ๋๋ค.
์ด๋ฐ ์ ์ฐํจ์ผ๋ก JDBC์ ๊ฐ์ ์๋น์ค ์ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ๊ทผ๊ฐ์ด ๋๋ค. JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๊ณ Connection์ ์์ฑํ๋ ์์ค๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
//JDBC ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("com.mysql.jdbc.Driver");
//Connection ์์ฑ
Connection con = DriverManager.getConnection(url, user, pw); //DB ์ ์ ์ ๋ณด
getConnection()์ ์ํด ๋ฐํ๋๋ ๊ตฌํ์ฒด๋ DBMS์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฒ ๋๋๋ฐ, ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ DBMS์ ๋ง๋ API๋ฅผ ๋ฐ๋ก ๊ตฌํํ์ง ์๊ณ ํด๋์ค๊ฐ ๋ก๋๋๋ ์์ ์์ ๊ตฌํ์ฒด๋ฅผ ์์ฑํด์ ๋ฐํํ๋ค.
์ฐธ๊ณ : Class.forName() ์ ๋ํ ํฌ์คํ -> https://kyun2.tistory.com/23
ํ์ง๋ง ์ฅ์ ๋ง ์๋ ๊ฒ์ด ์๋๋ผ ๋จ์ ๋ ์๋ค.
1. ์์์ ํ๋ ค๋ฉด public์ด๋ protected ์์ฑ์๊ฐ ํ์ํด์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ฉด ํ์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
2. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฐพ๊ธฐ ์ด๋ ต๋ค.
์์ฑ์์ฒ๋ผ API ์ค๋ช ์ ๋ช ํํ ๋๋ฌ๋์ง ์์ผ๋ฏ๋ก, ๋๋ฆฌ ์๋ ค์ง ๋ช ๋ช ๊ท์น์ ๋ฐ๋ผ ๋ฉ์๋ ๋ช ์ ๋ค์ด๋ฐ ํด์ผํ ๊ฒ ์ด๋ค.
๊ฒฐ๋ก
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ ์์ฑ์๋ ๊ฐ๊ฐ์ ์ฐ์์๊ฐ ์์ผ๋ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ํ์ ํ์ฌ ์ํฉ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋๋ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๊ฐ ์ ๋ฆฌํ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง์ผ๋ฏ๋ก ๋ฌด์กฐ๊ฑด ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ์ต๊ด์ ๊ณ ์ณ์ผ ํ๋ค๊ณ ํ๋ค..!
์ถ์ฒ : ์ดํํฐ๋ธ์๋ฐ
'์์ฑ์ ๋์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ๊ณ ๋ คํ๋ผ'
'๊ฐ๋ฐ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Optional ๊ฐ๋ ๋ฐ ์ฌ์ฉ๋ฒ, ์์ (1) | 2022.01.21 |
---|---|
[JAVA] Error, Checked Exception, Unchecked Exception ๋น๊ต (0) | 2022.01.12 |
[JAVA] ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋? (static factory method) (1) | 2022.01.10 |
[JAVA] ๋ ์ง ๋น๊ต ํ๊ธฐ (Date, LocalDateTime, LocalDate) (2) | 2021.12.21 |
[JAVA] VO๋ฅผ JSON ๋ฐ์ดํฐ๋ก ๋ณํ (java class to json, vo to json) (0) | 2021.12.09 |
๋๊ธ