zoukankan      html  css  js  c++  java
  • [Draft]iOS.Architecture.16.Truth-information-flow-and-clear-responsibilities-immutability

    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] 

    2. Information Flow (Data Flow)

    3. Clear Responsibilities

    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 (DSL, ruby)

    Ref[10] 

    4.5 Code Generation (remodel) 

    Ref[11] Ref[12] 

    Remodel Plugin

    https://github.com/facebook/remodel/blob/master/PLUGINS.md 

    4.6 Code Generation (plank)

    Ref[13]

    4.7 Consistency

    Ref[14]


    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/

    12. remodel

    https://github.com/facebook/remodel

    Remodel is a tool that helps iOS and OS X developers avoid repetitive code by generating Objective-C

    models that support coding, value comparison, and immutability.

    13. plank

    A tool for generating immutable model objects https://pinterest.github.io/plank/

    https://github.com/pinterest/plank/

    14. ConsistencyManager-iOS

    https://github.com/plivesey/ConsistencyManager-iOS

    A library that manages consistency of immutable models https://plivesey.github.io/Consistenc…

    15. iOS响应式架构

    http://blog.mrriddler.com/2017/06/28/iOS响应式架构/

    16. Single Source of Truth Principal in Software Development (Android) 

    https://www.youtube.com/watch?v=Ex9IT1bq0PQ

    https://codingwithmitch.com/courses/android-local-database-cache-rest-api/demo/

    In this course you'll learn how to build a local database cache with SQLite and Room.

    The cache retrieves data from a REST API using Retrofit2. Architecture is MVVM.

    17. Difference between Single Source Of Truth and Single Responsibility Principle?

    https://softwareengineering.stackexchange.com/questions/284874/difference-between-single-source-of-truth-and-single-responsibility-principle

    18. Understanding One Source of Truth for Analytics

    https://blogs.workday.com/understanding-one-source-truth-analytics/

    19. The Single Source of Truth

    https://blog.buckets.co/the-single-source-of-truth-430b61d10e19

    20. Why Single Source of Truth Data Systems Kill Team Collaboration

    https://unito.io/blog/a-single-source-of-truth-data-system-kills-team-collaboration-heres-why/

    21. Single Source of Truth

    https://www.dragon1.com/concepts/single-source-of-truth

    22. Single Source of Truth…and Why it Matters

    https://medium.com/@elisavaccaro/single-source-of-truth-and-why-it-matters-a68e28b8c175

    23. 应用架构指南

    https://developer.android.com/jetpack/docs/guide

     

     
  • 相关阅读:
    postman——集合——执行集合——测试脚本——示例09——检查响应体的json值
    和菜鸟一起深入学习国嵌实验之进程创建,exec函数,进程等待
    “万能数据库查询分析器”中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》最新3.02 已经在中关村在线升级完成
    彻底删除文件(File Delete Absolutely) 最新3.01版本 也已经在中关村在线升级成功
    The 8th tip of SQL design by DB Query Analyzer
    万能数据库查询分析器使用技巧之(八)
    和菜鸟一起深入学习国嵌实验之进程间通信
    和菜鸟一起深入学习国嵌实验之网络编程
    Android窗口管理服务WindowManagerService对壁纸窗口(Wallpaper Window)的管理分析
    和菜鸟一起深入学习国嵌实验之线程编程
  • 原文地址:https://www.cnblogs.com/cwgk/p/9007000.html
Copyright © 2011-2022 走看看