feat : Design Pattern - 파사드(Facade) 패턴 구현
This commit is contained in:
@@ -126,6 +126,13 @@
|
||||
|
||||
### 파사드(Facade) 패턴
|
||||
|
||||
#### 구현 요구사항
|
||||
|
||||
- 회원의 모든 정보를 조회한다.
|
||||
- 회원의 모든 정보에는 회원의 기본 정보와 친구들에 대한 정보가 있다.
|
||||
- 회원의 기본 정보에는 이름, 나이가 있다.
|
||||
- 회원의 친구 정보에는 친구의 이름, 나이가 있다.
|
||||
|
||||
### 추상 팩토리(Abstract Factory) 패턴
|
||||
|
||||
### 컴포지트(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