Skip to content

Commit 272c2ee

Browse files
facdade 模式
1 parent 90d7e7d commit 272c2ee

File tree

17 files changed

+652
-0
lines changed

17 files changed

+652
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# 外观模式
2+
3+
## 什么是外观模式?
4+
5+
为一个系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
6+
7+
## 外观模式有哪些优点?
8+
* 隐藏复杂逻辑,简化使用方式
9+
10+
11+
## 外观模式有哪些缺点?
12+
* 新增子系统时,可能需要修改外观代码,违反了开闭原则
13+
14+
## 适用场景
15+
* 系统分层
16+
* 降低与大量子系统的耦合
17+
Lines changed: 325 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,325 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 50;
7+
objects = {
8+
9+
/* Begin PBXBuildFile section */
10+
DA76D9F021C7E00400D4CD12 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76D9EF21C7E00400D4CD12 /* main.m */; };
11+
DA76D9F921C7E09900D4CD12 /* Stock1.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76D9F821C7E09900D4CD12 /* Stock1.m */; };
12+
DA76D9FC21C7E0A300D4CD12 /* Stock2.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76D9FB21C7E0A300D4CD12 /* Stock2.m */; };
13+
DA76D9FF21C7E0AA00D4CD12 /* Stock3.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76D9FE21C7E0AA00D4CD12 /* Stock3.m */; };
14+
DA76DA0221C7E0D100D4CD12 /* NationalDebt1.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76DA0121C7E0D100D4CD12 /* NationalDebt1.m */; };
15+
DA76DA0521C7E0FA00D4CD12 /* Realty1.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76DA0421C7E0FA00D4CD12 /* Realty1.m */; };
16+
DA76DA0821C7E10700D4CD12 /* Fund.m in Sources */ = {isa = PBXBuildFile; fileRef = DA76DA0721C7E10700D4CD12 /* Fund.m */; };
17+
/* End PBXBuildFile section */
18+
19+
/* Begin PBXCopyFilesBuildPhase section */
20+
DA76D9EA21C7E00400D4CD12 /* CopyFiles */ = {
21+
isa = PBXCopyFilesBuildPhase;
22+
buildActionMask = 2147483647;
23+
dstPath = /usr/share/man/man1/;
24+
dstSubfolderSpec = 0;
25+
files = (
26+
);
27+
runOnlyForDeploymentPostprocessing = 1;
28+
};
29+
/* End PBXCopyFilesBuildPhase section */
30+
31+
/* Begin PBXFileReference section */
32+
DA76D9EC21C7E00400D4CD12 /* facade */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = facade; sourceTree = BUILT_PRODUCTS_DIR; };
33+
DA76D9EF21C7E00400D4CD12 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
34+
DA76D9F721C7E09900D4CD12 /* Stock1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stock1.h; sourceTree = "<group>"; };
35+
DA76D9F821C7E09900D4CD12 /* Stock1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Stock1.m; sourceTree = "<group>"; };
36+
DA76D9FA21C7E0A300D4CD12 /* Stock2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stock2.h; sourceTree = "<group>"; };
37+
DA76D9FB21C7E0A300D4CD12 /* Stock2.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Stock2.m; sourceTree = "<group>"; };
38+
DA76D9FD21C7E0AA00D4CD12 /* Stock3.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stock3.h; sourceTree = "<group>"; };
39+
DA76D9FE21C7E0AA00D4CD12 /* Stock3.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Stock3.m; sourceTree = "<group>"; };
40+
DA76DA0021C7E0D100D4CD12 /* NationalDebt1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NationalDebt1.h; sourceTree = "<group>"; };
41+
DA76DA0121C7E0D100D4CD12 /* NationalDebt1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NationalDebt1.m; sourceTree = "<group>"; };
42+
DA76DA0321C7E0FA00D4CD12 /* Realty1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Realty1.h; sourceTree = "<group>"; };
43+
DA76DA0421C7E0FA00D4CD12 /* Realty1.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Realty1.m; sourceTree = "<group>"; };
44+
DA76DA0621C7E10700D4CD12 /* Fund.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fund.h; sourceTree = "<group>"; };
45+
DA76DA0721C7E10700D4CD12 /* Fund.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Fund.m; sourceTree = "<group>"; };
46+
/* End PBXFileReference section */
47+
48+
/* Begin PBXFrameworksBuildPhase section */
49+
DA76D9E921C7E00400D4CD12 /* Frameworks */ = {
50+
isa = PBXFrameworksBuildPhase;
51+
buildActionMask = 2147483647;
52+
files = (
53+
);
54+
runOnlyForDeploymentPostprocessing = 0;
55+
};
56+
/* End PBXFrameworksBuildPhase section */
57+
58+
/* Begin PBXGroup section */
59+
DA76D9E321C7E00400D4CD12 = {
60+
isa = PBXGroup;
61+
children = (
62+
DA76D9EE21C7E00400D4CD12 /* facade */,
63+
DA76D9ED21C7E00400D4CD12 /* Products */,
64+
);
65+
sourceTree = "<group>";
66+
};
67+
DA76D9ED21C7E00400D4CD12 /* Products */ = {
68+
isa = PBXGroup;
69+
children = (
70+
DA76D9EC21C7E00400D4CD12 /* facade */,
71+
);
72+
name = Products;
73+
sourceTree = "<group>";
74+
};
75+
DA76D9EE21C7E00400D4CD12 /* facade */ = {
76+
isa = PBXGroup;
77+
children = (
78+
DA76D9F621C7E01800D4CD12 /* facade */,
79+
DA76D9EF21C7E00400D4CD12 /* main.m */,
80+
);
81+
path = facade;
82+
sourceTree = "<group>";
83+
};
84+
DA76D9F621C7E01800D4CD12 /* facade */ = {
85+
isa = PBXGroup;
86+
children = (
87+
DA76D9F721C7E09900D4CD12 /* Stock1.h */,
88+
DA76D9F821C7E09900D4CD12 /* Stock1.m */,
89+
DA76D9FA21C7E0A300D4CD12 /* Stock2.h */,
90+
DA76D9FB21C7E0A300D4CD12 /* Stock2.m */,
91+
DA76D9FD21C7E0AA00D4CD12 /* Stock3.h */,
92+
DA76D9FE21C7E0AA00D4CD12 /* Stock3.m */,
93+
DA76DA0021C7E0D100D4CD12 /* NationalDebt1.h */,
94+
DA76DA0121C7E0D100D4CD12 /* NationalDebt1.m */,
95+
DA76DA0321C7E0FA00D4CD12 /* Realty1.h */,
96+
DA76DA0421C7E0FA00D4CD12 /* Realty1.m */,
97+
DA76DA0621C7E10700D4CD12 /* Fund.h */,
98+
DA76DA0721C7E10700D4CD12 /* Fund.m */,
99+
);
100+
path = facade;
101+
sourceTree = "<group>";
102+
};
103+
/* End PBXGroup section */
104+
105+
/* Begin PBXNativeTarget section */
106+
DA76D9EB21C7E00400D4CD12 /* facade */ = {
107+
isa = PBXNativeTarget;
108+
buildConfigurationList = DA76D9F321C7E00400D4CD12 /* Build configuration list for PBXNativeTarget "facade" */;
109+
buildPhases = (
110+
DA76D9E821C7E00400D4CD12 /* Sources */,
111+
DA76D9E921C7E00400D4CD12 /* Frameworks */,
112+
DA76D9EA21C7E00400D4CD12 /* CopyFiles */,
113+
);
114+
buildRules = (
115+
);
116+
dependencies = (
117+
);
118+
name = facade;
119+
productName = facade;
120+
productReference = DA76D9EC21C7E00400D4CD12 /* facade */;
121+
productType = "com.apple.product-type.tool";
122+
};
123+
/* End PBXNativeTarget section */
124+
125+
/* Begin PBXProject section */
126+
DA76D9E421C7E00400D4CD12 /* Project object */ = {
127+
isa = PBXProject;
128+
attributes = {
129+
LastUpgradeCheck = 1010;
130+
ORGANIZATIONNAME = "王俊";
131+
TargetAttributes = {
132+
DA76D9EB21C7E00400D4CD12 = {
133+
CreatedOnToolsVersion = 10.1;
134+
};
135+
};
136+
};
137+
buildConfigurationList = DA76D9E721C7E00400D4CD12 /* Build configuration list for PBXProject "facade" */;
138+
compatibilityVersion = "Xcode 9.3";
139+
developmentRegion = en;
140+
hasScannedForEncodings = 0;
141+
knownRegions = (
142+
en,
143+
);
144+
mainGroup = DA76D9E321C7E00400D4CD12;
145+
productRefGroup = DA76D9ED21C7E00400D4CD12 /* Products */;
146+
projectDirPath = "";
147+
projectRoot = "";
148+
targets = (
149+
DA76D9EB21C7E00400D4CD12 /* facade */,
150+
);
151+
};
152+
/* End PBXProject section */
153+
154+
/* Begin PBXSourcesBuildPhase section */
155+
DA76D9E821C7E00400D4CD12 /* Sources */ = {
156+
isa = PBXSourcesBuildPhase;
157+
buildActionMask = 2147483647;
158+
files = (
159+
DA76D9F921C7E09900D4CD12 /* Stock1.m in Sources */,
160+
DA76D9F021C7E00400D4CD12 /* main.m in Sources */,
161+
DA76DA0521C7E0FA00D4CD12 /* Realty1.m in Sources */,
162+
DA76D9FF21C7E0AA00D4CD12 /* Stock3.m in Sources */,
163+
DA76D9FC21C7E0A300D4CD12 /* Stock2.m in Sources */,
164+
DA76DA0221C7E0D100D4CD12 /* NationalDebt1.m in Sources */,
165+
DA76DA0821C7E10700D4CD12 /* Fund.m in Sources */,
166+
);
167+
runOnlyForDeploymentPostprocessing = 0;
168+
};
169+
/* End PBXSourcesBuildPhase section */
170+
171+
/* Begin XCBuildConfiguration section */
172+
DA76D9F121C7E00400D4CD12 /* Debug */ = {
173+
isa = XCBuildConfiguration;
174+
buildSettings = {
175+
ALWAYS_SEARCH_USER_PATHS = NO;
176+
CLANG_ANALYZER_NONNULL = YES;
177+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
178+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
179+
CLANG_CXX_LIBRARY = "libc++";
180+
CLANG_ENABLE_MODULES = YES;
181+
CLANG_ENABLE_OBJC_ARC = YES;
182+
CLANG_ENABLE_OBJC_WEAK = YES;
183+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
184+
CLANG_WARN_BOOL_CONVERSION = YES;
185+
CLANG_WARN_COMMA = YES;
186+
CLANG_WARN_CONSTANT_CONVERSION = YES;
187+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
188+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
189+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
190+
CLANG_WARN_EMPTY_BODY = YES;
191+
CLANG_WARN_ENUM_CONVERSION = YES;
192+
CLANG_WARN_INFINITE_RECURSION = YES;
193+
CLANG_WARN_INT_CONVERSION = YES;
194+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
195+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
196+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
197+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
198+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
199+
CLANG_WARN_STRICT_PROTOTYPES = YES;
200+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
201+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
202+
CLANG_WARN_UNREACHABLE_CODE = YES;
203+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
204+
CODE_SIGN_IDENTITY = "Mac Developer";
205+
COPY_PHASE_STRIP = NO;
206+
DEBUG_INFORMATION_FORMAT = dwarf;
207+
ENABLE_STRICT_OBJC_MSGSEND = YES;
208+
ENABLE_TESTABILITY = YES;
209+
GCC_C_LANGUAGE_STANDARD = gnu11;
210+
GCC_DYNAMIC_NO_PIC = NO;
211+
GCC_NO_COMMON_BLOCKS = YES;
212+
GCC_OPTIMIZATION_LEVEL = 0;
213+
GCC_PREPROCESSOR_DEFINITIONS = (
214+
"DEBUG=1",
215+
"$(inherited)",
216+
);
217+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
218+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
219+
GCC_WARN_UNDECLARED_SELECTOR = YES;
220+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
221+
GCC_WARN_UNUSED_FUNCTION = YES;
222+
GCC_WARN_UNUSED_VARIABLE = YES;
223+
MACOSX_DEPLOYMENT_TARGET = 10.14;
224+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
225+
MTL_FAST_MATH = YES;
226+
ONLY_ACTIVE_ARCH = YES;
227+
SDKROOT = macosx;
228+
};
229+
name = Debug;
230+
};
231+
DA76D9F221C7E00400D4CD12 /* Release */ = {
232+
isa = XCBuildConfiguration;
233+
buildSettings = {
234+
ALWAYS_SEARCH_USER_PATHS = NO;
235+
CLANG_ANALYZER_NONNULL = YES;
236+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
237+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
238+
CLANG_CXX_LIBRARY = "libc++";
239+
CLANG_ENABLE_MODULES = YES;
240+
CLANG_ENABLE_OBJC_ARC = YES;
241+
CLANG_ENABLE_OBJC_WEAK = YES;
242+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
243+
CLANG_WARN_BOOL_CONVERSION = YES;
244+
CLANG_WARN_COMMA = YES;
245+
CLANG_WARN_CONSTANT_CONVERSION = YES;
246+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
247+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
248+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
249+
CLANG_WARN_EMPTY_BODY = YES;
250+
CLANG_WARN_ENUM_CONVERSION = YES;
251+
CLANG_WARN_INFINITE_RECURSION = YES;
252+
CLANG_WARN_INT_CONVERSION = YES;
253+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
254+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
255+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
256+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
257+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
258+
CLANG_WARN_STRICT_PROTOTYPES = YES;
259+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
260+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
261+
CLANG_WARN_UNREACHABLE_CODE = YES;
262+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
263+
CODE_SIGN_IDENTITY = "Mac Developer";
264+
COPY_PHASE_STRIP = NO;
265+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
266+
ENABLE_NS_ASSERTIONS = NO;
267+
ENABLE_STRICT_OBJC_MSGSEND = YES;
268+
GCC_C_LANGUAGE_STANDARD = gnu11;
269+
GCC_NO_COMMON_BLOCKS = YES;
270+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
271+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
272+
GCC_WARN_UNDECLARED_SELECTOR = YES;
273+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
274+
GCC_WARN_UNUSED_FUNCTION = YES;
275+
GCC_WARN_UNUSED_VARIABLE = YES;
276+
MACOSX_DEPLOYMENT_TARGET = 10.14;
277+
MTL_ENABLE_DEBUG_INFO = NO;
278+
MTL_FAST_MATH = YES;
279+
SDKROOT = macosx;
280+
};
281+
name = Release;
282+
};
283+
DA76D9F421C7E00400D4CD12 /* Debug */ = {
284+
isa = XCBuildConfiguration;
285+
buildSettings = {
286+
CODE_SIGN_STYLE = Automatic;
287+
DEVELOPMENT_TEAM = 7465LVKW35;
288+
PRODUCT_NAME = "$(TARGET_NAME)";
289+
};
290+
name = Debug;
291+
};
292+
DA76D9F521C7E00400D4CD12 /* Release */ = {
293+
isa = XCBuildConfiguration;
294+
buildSettings = {
295+
CODE_SIGN_STYLE = Automatic;
296+
DEVELOPMENT_TEAM = 7465LVKW35;
297+
PRODUCT_NAME = "$(TARGET_NAME)";
298+
};
299+
name = Release;
300+
};
301+
/* End XCBuildConfiguration section */
302+
303+
/* Begin XCConfigurationList section */
304+
DA76D9E721C7E00400D4CD12 /* Build configuration list for PBXProject "facade" */ = {
305+
isa = XCConfigurationList;
306+
buildConfigurations = (
307+
DA76D9F121C7E00400D4CD12 /* Debug */,
308+
DA76D9F221C7E00400D4CD12 /* Release */,
309+
);
310+
defaultConfigurationIsVisible = 0;
311+
defaultConfigurationName = Release;
312+
};
313+
DA76D9F321C7E00400D4CD12 /* Build configuration list for PBXNativeTarget "facade" */ = {
314+
isa = XCConfigurationList;
315+
buildConfigurations = (
316+
DA76D9F421C7E00400D4CD12 /* Debug */,
317+
DA76D9F521C7E00400D4CD12 /* Release */,
318+
);
319+
defaultConfigurationIsVisible = 0;
320+
defaultConfigurationName = Release;
321+
};
322+
/* End XCConfigurationList section */
323+
};
324+
rootObject = DA76D9E421C7E00400D4CD12 /* Project object */;
325+
}

da-hua-she-ji-mo-shi/12-facade/facade/facade.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>IDEDidComputeMac32BitWarning</key>
6+
<true/>
7+
</dict>
8+
</plist>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// Fund.h
3+
// facade
4+
//
5+
// Created by 王俊 on 2018/12/17.
6+
// Copyright © 2018 王俊. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface Fund : NSObject
14+
15+
- (void)buyFund;
16+
- (void)sellFund;
17+
18+
@end
19+
20+
NS_ASSUME_NONNULL_END

0 commit comments

Comments
 (0)