码迷,mamicode.com
首页 > 移动开发 > 详细

[Draft]iOS.Architecture.16.Truth-information-flow-and-clear-responsibilities-immutability

时间:2018-05-09 15:01:52      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:model   ash   ios   data   wwdc   logs   objc   john   VID   

Concept: Truth, Information Flow, Clear Responsibilities and Immutability

 

1. Truth

 

1.1 Single Source of Truth

单一的事实/真想来源

Ref[2] Ref[3]

 

"One core principle that is good to keep in mind when modelling various states is to try to stick to

“single source of truth” as much as possible. One easy wayto look at this is that you should never

need to check for multiple conditions to determine what state you are in." Ref[2]

 

1.2 Truth vs 

Ref[1] 

 

 

4. Immutability

google "immutable object in objective-c"

 

4.0 Mutable vs Immutable Object 

 

 

4.1 Why immutable object?

 

Value Object

“In computer science, a value object is a small object that represents a simple entity

whose equality is not based on identity: i.e. two value objects are equal when they

have the same value, not necessarily being the same object.

 

Value objects should be immutable: this is required for the implicit contract that

two value objects created equal, should remain equal. It is also useful for value objects

to be immutable, as client code cannot put the value object in an invalid state or

introduce buggy behaviour after instantiation.” Ref[9]

 

Value Object and Mantle

"For an Objective-C class to be used as a value object, it needs to be immutable,

support value equality, implement proper hashing, and support NSCopying.

Mantle provides the latter three just by subclassing MTLModel. "

 

4.2 Immutability and Builder Pattern

Ref[4] Ref[5] Ref[8]

Too many parameters in initializer method

 

4.3 Builder Pattern in Objective-C and Swift

Objective-C Version

http://www.cnblogs.com/cwgk/p/9013260.html 

Swift Version

Todo

 

4.4 Code Generation

Ref[10] 

 

 

 

 

 


Reference

1. Advanced iOS Application Architecture and Patterns

http://asciiwwdc.com/2014/sessions/229

2. Modelling state in Swift

https://medium.com/@johnsundell/modelling-state-in-swift-3751a4acb8f3

Rules: 

A single source of truth

Making states exclusive

Rendering reactively

Handling state changes

Extracting information

 

3. Single source of truth

https://en.wikipedia.org/wiki/Single_source_of_truth

4. Immutability and Builder Pattern

http://kean.github.io/post/immutability-and-builder-pattern

5. Value Objects (Read Again)

https://www.objc.io/issues/7-foundation/value-objects/

6. Mutability, aliasing, and the caches you didn‘t know you had

https://garbagecollective.quora.com/Mutability-aliasing-and-the-caches-you-didnt-know-you-had 

7. Boundaries (To Read)

https://www.destroyallsoftware.com/talks/boundaries

8. Improving Immutable Object Initialization in Objective-C

http://holko.pl/2015/05/12/immutable-object-initialization/

AHKBuilder

9. Simplifying Objective-C Value Objects with Mantle and the Builder Pattern (AAAA+)

https://spin.atomicobject.com/2015/11/02/objective-c-value-objects-mantle/

10. Objective-C Value Objects: Code Generation

https://spin.atomicobject.com/2015/12/16/objective-c-value-objects-code-generation/

11. Building and managing iOS model objects with Remodel

https://code.facebook.com/posts/1154141864616569/building-and-managing-ios-model-objects-with-remodel/

 

[Draft]iOS.Architecture.16.Truth-information-flow-and-clear-responsibilities-immutability

标签:model   ash   ios   data   wwdc   logs   objc   john   VID   

原文地址:https://www.cnblogs.com/cwgk/p/9007000.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!