forked from yogykwan/design-patterns-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathabstract_factory.h
More file actions
69 lines (55 loc) · 1.27 KB
/
abstract_factory.h
File metadata and controls
69 lines (55 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//
// Created by Jennica on 2016/12/23.
//
#ifndef DESIGN_PATTERNS_ABSTRACT_FACTORY_H
#define DESIGN_PATTERNS_ABSTRACT_FACTORY_H
class User {
};
class IUser {
public:
virtual void InsertUser(User*) = 0;
virtual User GetUser(int) = 0;
};
class SqlserverUser: public IUser {
public:
void InsertUser(User* user);
User GetUser(int id);
};
class AccessUser: public IUser {
public:
void InsertUser(User* user);
User GetUser(int id);
};
class Department {
};
class IDepartment {
public:
virtual void InsertDepartment(Department*) = 0;
virtual Department GetDepartment(int) = 0;
};
class SqlserverDepartment: public IDepartment {
public:
void InsertDepartment(Department* department);
Department GetDepartment(int id);
};
class AccessDepartment: public IDepartment {
public:
void InsertDepartment(Department* department);
Department GetDepartment(int id);
};
class IFactory {
public:
virtual IUser* CreateUser() = 0;
virtual IDepartment* CreateDepartment() = 0;
};
class SqlserverFactory: public IFactory {
public:
IUser* CreateUser();
IDepartment* CreateDepartment();
};
class AccessFactory: public IFactory {
public:
IUser* CreateUser();
IDepartment* CreateDepartment();
};
#endif //DESIGN_PATTERNS_ABSTRACT_FACTORY_H