K.NET講師 Clark
 Microsoft C# MVP
 部落格:昏睡領域
http://www.dotblogs.com.tw/clark/
 技術專長:
◦ 領域驅動開發流程
◦ 軟體架構分析設計
◦ 軟韌硬體整合開發
◦ 跨平台APP架構設計
 開發APP的原因
 開發APP的平台
 開發APP的挑戰
 開發APP的設計
 開發APP的實作
 使用者黏著手機的時間比較長
 延伸既有服務接觸更多使用者
 面對使用者銷售增加荷包收入
 ……
 別人有、我也要
 別人有、我也要(老闆說)
 開發APP的原因
 開發APP的平台
 開發APP的挑戰
 開發APP的設計
 開發APP的實作
Objective-C Java C#
C#
JavaScript
JavaScript
Objective-C Java C#
 開發APP的原因
 開發APP的平台
 開發APP的挑戰
 開發APP的設計
 開發APP的實作
APP
SchemaWebAPI
Prototype SA
SD
PG
Objective-C
(平均1.3年)
Java
(平均1.8年)
C#
(平均0.8年)
Objective-C Java C#
 開發APP的原因
 開發APP的平台
 開發APP的挑戰
 開發APP的設計
 開發APP的實作
Presentation
Domain
Access
OO + Language
領域模型 領域物件 程式物件
namespace Clark.Samples
{
public class ClassA
{
}
}
系統分析 系統設計 程式開發
public class ClassA
{
public string Execute()
{
// Create
var classB = new ClassB();
// Execute
var result = classB.Run();
// Return
return result;
}
}
企業知識
軟體架構
領域物件領域邏輯
系統分析 系統設計 程式開發
程式開發
程式開發
Senior Junior
系統分析 系統設計 程式開發
程式開發
程式開發
OOAOOD Language
系統分析 系統設計 程式開發
程式開發
程式開發
Object-Oriented
 開發APP的原因
 開發APP的平台
 開發APP的挑戰
 開發APP的設計
 開發APP的實作
public class TestClass {
// methods
public void execute() {…}
}
Java
@interface CSTestClass
// methods
- (void)execute;
@end
Objective-C
public class TestClass
{
// Methods
public void Execute() {…}
}
C#
package clark.samples;
Java
@interface CSTestClass
@end
Objective-C
namespace Clark.Samples
{
}
C#
// class
public class TestClass {
}
Java
// class
@interface CSTestClass
@end
Objective-C
// Class
public class TestClass
{
}
C#
// properties
private TestService _testService;
public final TestService getTestService() {
return _testService;
}
Java
// properties
@property (readonly, retain) TestService*
testService;
Objective-C
// properties
public TestService TestService { get; }
C#
// methods
public void execute() {
}
Java
// methods
- (void)execute;
Objective-C
// Methods
public void Execute()
{
}
C#
_service.executeCompleted().add(
new ActionEventHandler.Type1<String>() {
@Override public void raise(String value) {
// do something ...
}
});
Java
[_service.executeCompleted addObject:
[^void(NSString* value) {
// do something ...
} copy]
];
Objective-C
_service.executeCompleted += delegate (string value)
{
// do something ...
};
C#
系統分析 系統設計 程式開發
程式開發
程式開發
系統設計
系統設計
C# : async/await
Java : ActionTask
Obj-C : Callback
Java : ActionTask
C# : async/await
Obj-C : Callback
系統分析 系統設計 程式開發
程式開發
程式開發
All : Promise Java : Promise
C# : Promise
Obj-C : Promise
 https://github.com/Clark159/CLK.Promises
Q & A

面對移動化App挑戰的架構設計