abstract_factory.puml 1.3 KB
Newer Older
门心叼龙's avatar
门心叼龙 已提交
1
@startuml
门心叼龙's avatar
门心叼龙 已提交
2
skinparam classAttributeIconSize 0
门心叼龙's avatar
门心叼龙 已提交
3
package "Abstract Factory Pattern"{
门心叼龙's avatar
门心叼龙 已提交
4 5 6 7 8
interface IPerson{
     +eat():void
     +sleep():void
     +study():void
}
门心叼龙's avatar
门心叼龙 已提交
9

门心叼龙's avatar
门心叼龙 已提交
10 11 12 13
class YellowPerson implements IPerson
class WhitePerson implements IPerson
class BlackPerson implements IPerson

门心叼龙's avatar
门心叼龙 已提交
14 15
class YellowManPerson
note bottom:黄色男人
门心叼龙's avatar
门心叼龙 已提交
16
class YellowManPerson extends YellowPerson
门心叼龙's avatar
门心叼龙 已提交
17 18 19

class YellowWomanPerson
note bottom:黄色女人
门心叼龙's avatar
门心叼龙 已提交
20 21
class YellowWomanPerson extends YellowPerson

门心叼龙's avatar
门心叼龙 已提交
22 23
class WhiteManPerson
note bottom:白色男人
门心叼龙's avatar
门心叼龙 已提交
24
class WhiteManPerson extends WhitePerson
门心叼龙's avatar
门心叼龙 已提交
25 26 27

class WhiteWomanPerson
note bottom:白色女人
门心叼龙's avatar
门心叼龙 已提交
28 29
class WhiteWomanPerson extends WhitePerson

门心叼龙's avatar
门心叼龙 已提交
30 31
class BlackManPerson
note bottom:黑色男人
门心叼龙's avatar
门心叼龙 已提交
32
class BlackManPerson extends BlackPerson
门心叼龙's avatar
门心叼龙 已提交
33 34 35

class BlackWomanPerson
note bottom:黑色女人
门心叼龙's avatar
门心叼龙 已提交
36 37 38
class BlackWomanPerson extends BlackPerson

interface IPersonFactory {
门心叼龙's avatar
门心叼龙 已提交
39 40 41
    +createWhitePerson():IPerson;
    +IPerson createBlackPerson():IPerson;
    +IPerson createYellowPerson():IPerson;
门心叼龙's avatar
门心叼龙 已提交
42 43
}
note top:定义一个创建一组相关或具有相互依赖关系\n的对象的接口,而且无需指定他们的具体类型
门心叼龙's avatar
门心叼龙 已提交
44 45
class ManFactory
note right:男人工厂
门心叼龙's avatar
门心叼龙 已提交
46
class ManFactory implements IPersonFactory
门心叼龙's avatar
门心叼龙 已提交
47 48 49

class WomanFactory
note right:女人工厂
门心叼龙's avatar
门心叼龙 已提交
50 51 52 53 54 55 56
class WomanFactory implements IPersonFactory

ManFactory -.> IPerson
WomanFactory -.> IPerson
}

@enduml