feat : Design Pattern - 파사드(Facade) 패턴 구현
This commit is contained in:
@@ -126,6 +126,13 @@
|
|||||||
|
|
||||||
### 파사드(Facade) 패턴
|
### 파사드(Facade) 패턴
|
||||||
|
|
||||||
|
#### 구현 요구사항
|
||||||
|
|
||||||
|
- 회원의 모든 정보를 조회한다.
|
||||||
|
- 회원의 모든 정보에는 회원의 기본 정보와 친구들에 대한 정보가 있다.
|
||||||
|
- 회원의 기본 정보에는 이름, 나이가 있다.
|
||||||
|
- 회원의 친구 정보에는 친구의 이름, 나이가 있다.
|
||||||
|
|
||||||
### 추상 팩토리(Abstract Factory) 패턴
|
### 추상 팩토리(Abstract Factory) 패턴
|
||||||
|
|
||||||
### 컴포지트(Composite) 패턴
|
### 컴포지트(Composite) 패턴
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.after
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.Information
|
||||||
|
|
||||||
|
interface InformationFinder {
|
||||||
|
fun findInformation(): Information
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.after
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.FriendFinder
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.MemberFinder
|
||||||
|
|
||||||
|
class MemberApplication
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val memberFinder = MemberFinder()
|
||||||
|
val friendFinder = FriendFinder()
|
||||||
|
|
||||||
|
val memberInformationFinder = MemberInformationFinder(memberFinder, friendFinder)
|
||||||
|
|
||||||
|
val memberInformation = memberInformationFinder.findInformation()
|
||||||
|
println(memberInformation)
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.after
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.FriendFinder
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.Information
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.MemberFinder
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.MemberInformation
|
||||||
|
|
||||||
|
class MemberInformationFinder(
|
||||||
|
private val memberFinder: MemberFinder,
|
||||||
|
private val friendFinder: FriendFinder,
|
||||||
|
): InformationFinder {
|
||||||
|
override fun findInformation(): Information {
|
||||||
|
val member = memberFinder.findMember()
|
||||||
|
val friends = friendFinder.findFriends(member)
|
||||||
|
return MemberInformation(member, friends)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.before
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.FriendFinder
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.MemberFinder
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.MemberInformation
|
||||||
|
|
||||||
|
class MemberApplication
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val memberFinder = MemberFinder()
|
||||||
|
val friendFinder = FriendFinder()
|
||||||
|
|
||||||
|
val member = memberFinder.findMember()
|
||||||
|
val friends = friendFinder.findFriends(member)
|
||||||
|
|
||||||
|
val memberInformation = MemberInformation(member, friends)
|
||||||
|
println(memberInformation)
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
data class Friend(
|
||||||
|
val name: String,
|
||||||
|
val age: Int
|
||||||
|
)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.Friend
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.Member
|
||||||
|
|
||||||
|
class FriendFinder {
|
||||||
|
fun findFriends(member: Member): List<Friend> {
|
||||||
|
return listOf(Friend("colt", 29))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
data class FriendInformation(
|
||||||
|
val name: String,
|
||||||
|
val age: Int
|
||||||
|
) : Information {
|
||||||
|
constructor(friend: Friend) : this(
|
||||||
|
name = friend.name,
|
||||||
|
age = friend.age
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
interface Information
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
class Member(
|
||||||
|
val name: String,
|
||||||
|
val age: Int
|
||||||
|
)
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
import com.banjjoknim.soliddesignpatternsample.designpattern.facade.common.Member
|
||||||
|
|
||||||
|
class MemberFinder {
|
||||||
|
fun findMember(): Member {
|
||||||
|
return Member("banjjoknim", 29)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.banjjoknim.soliddesignpatternsample.designpattern.facade.common
|
||||||
|
|
||||||
|
data class MemberInformation(
|
||||||
|
val memberName: String,
|
||||||
|
val memberAge: Int,
|
||||||
|
val friendsInformation: List<FriendInformation>
|
||||||
|
): Information {
|
||||||
|
constructor(member: Member, friends: List<Friend>) : this(
|
||||||
|
memberName = member.name,
|
||||||
|
memberAge = member.age,
|
||||||
|
friendsInformation = friends.map { FriendInformation(it) }
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user