๐ย ์ค๋ ์ฝ์ ๋ฒ์ : 3. ํจ์ (40~54p)
public static String renderPageWithSetupsAndTeardowns(
PageData pageData, boolean isSuite) throws Exception {
if (isTestPage(pageData))
includeSetupAndTeardownPages(pageData, isSuite);
return pageData.getHtml();
}
TO ์ค์ ํ์ด์ง์ ํด์ ํ์ด์ง๋ฅผ ํฌํจํ๋ ค๋ฉด, ์ค์ ํ์ด์ง๋ฅผ ํฌํจํ๊ณ , ํ
์คํธ ํ์ด์ง ๋ด์ฉ์ ํฌํจํ๊ณ , ํด์ ํ์ด์ง๋ฅผ ํฌํจํ๋ค.
TO ์ค์ ํ์ด์ง๋ฅผ ํฌํจํ๋ ค๋ฉด, ์ํธ์ด๋ฉด ์ํธ ์ค์ ํ์ด์ง๋ฅผ ํฌํจํ ํ ์ผ๋ฐ ์ค์ ํ์ด์ง๋ฅผ ํฌํจํ๋ค.
TO ์ํธ ์ค์ ํ์ด์ง๋ฅผ ํฌํจํ๋ ค๋ฉด, ๋ถ๋ชจ ๊ณ์ธต์์ โSuiteSetUpโ ํ์ด์ง๋ฅผ ์ฐพ ์ include ๋ฌธ๊ณผ ํ์ด์ง ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ๋ค.
TO ๋ถ๋ชจ ๊ณ์ธต์ ๊ฒ์ํ๋ ค๋ฉด, ......
// ์๋ชป๋ switch ์ฌ์ฉ
public Money calculatePay(Employee e)
throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
ํจ์๊ฐ ๊ธธ๋ค
ํ๊ฐ์ง ์์ ๋ง ์ํํ์ง๋ฅผ ์๋๋ค
SingleResponsibilityPrinciple์ ์๋ฐ (์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๊ฐ๋ฅ์ฑ ์กด์ฌ)
OpenClosedPrinciple ์๋ฐ (์ ์ง์ ์ ํ ์ถ๊ฐ์๋ง๋ค ์ฝ๋ ๋ณ๊ฒฝํ์)
๋์ผ ๊ตฌ์กฐ์ ํจ์๊ฐ ๋ฌดํ์ ์กด์ฌ
```java
isPayday(Employee e, Date date);
deliverPay(Employee e, Money pay);
```
public abstract class Employee {
public abstract boolean isPayday();
public abstract Money calculatePay();
public abstract void deliverPay(Money pay);
}
-----------------
public interface EmployeeFactory {
public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType;
}
-----------------
public class EmployeeFactoryImpl implements EmployeeFactory {
public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType {
switch (r.type) {
case COMMISSIONED:
return new CommissionedEmployee(r) ;
case HOURLY:
return new HourlyEmployee(r);
case SALARIED:
return new SalariedEmployee(r); default:
throw new InvalidEmployeeType(r.type);
}
}
}
switch ๋ฌธ์ Abstract factory์ ์จ๊ธด๋ค
factory๋ switch ํตํด ์ ์ ํ Employee ํ์ ํด๋์ค์ ์ธ์คํด์ค ์์ฑ
calculatePay, isPayday, deliverPay ๊ฐ์ ํจ์๋ Employee ์ธํฐํ์ด์ค ๊ฑฐ์ณ ํธ์ถ
โ ๋คํ์ฑ์ผ๋ก ์ค์ ํ์ ํด๋์ค ํจ์ ์คํ
includeSetupAndTeardownPages
includeSetupPages
includeSuiteSetupPage
includeSetupPage
boolean fileExists("MyFile")
InputStream fileOpen("MyFile")
passwordAttemptFailedNtimes(int attempts)
assertEquals(expected, actual)
โ ์์ ์ธ์ฐ์ง ์์ผ๋ฉด ํท๊ฐ๋ฆฐ๋คassertEquals(message, expected, actual)
Circle makeCircle(double x, double y, double radius);
Circle makeCircle(Point center, double radius);
String.format("%s worked %.2f" hours.", name, hours);
public String format(String format, Object... args)
void monad(Integer... args);
void dyad(String name, Integer... args);
void triad(String name, int count, Integer... args);
writeField(name)
assertEquals
< assertExpectedEqualsActual(expected, actual)