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)

A talk by Gary Bernhardt from SCNA 2012

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

 

[Draft]iOS.Architecture.16.Truth-information-flow-and-clear-responsibilities-immutability的更多相关文章

  1. Risk Adaptive Information Flow Based Access Control

    Systems and methods are provided to manage risk associated with access to information within a given ...

  2. iOS Architecture Patterns

    By Bohdan Orlov on 21 Mar 2016 - 0 Comments iOS FYI: Slides from my presentation at NSLondon are ava ...

  3. iOS根据16进制的色号来设置颜色,适合封装工具类

    iOS中有时候UI给的一个色号就像 #54e1b7 这个,而我们一般设置颜色都是根据RBG来设置的,所以这里需要把这个16进制的色号转为RGB值,这里我们就使用一下的方法来调用设置颜色. + (UIC ...

  4. iOS Architecture和Valid architectures

    目前ios的指令集有以下几种: 1,armv6,支持的机器iPhone,iPhone2,iPhone3G及对应的iTouch 2,armv7,支持的机器iPhone4,iPhone4S 3,armv7 ...

  5. iOS Architecture

    目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...

  6. [iOS]把16进制(#871f78)颜色转换UIColor

    // // ViewController.m // text // // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights ...

  7. 【转】iOS中16进制转10进制

    原文网址:http://www.voidcn.com/blog/u012198553/article/p-4976772.html /// 将十六进制的字符串转化为NSData - (NSData ) ...

  8. iOS开发-16进制颜色转换

    项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...

  9. IOS 颜色 16进制 转换

    #define RGB(r,g,b) ([UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]) #define HEXTO ...

随机推荐

  1. gentoo qt-creator no examples

    参考 [SOLVED] qtcreator: examples are missing https://forums.gentoo.org/viewtopic-t-1092826-highlight- ...

  2. 【python】django上传文件

    参考:https://blog.csdn.net/zahuopuboss/article/details/54891917 参考:https://blog.csdn.net/zzg_550413470 ...

  3. Jacey:烧了500万才知道,信息流广告OCPC竟然要这样玩!心疼

    现在很多线索类广告主,已经不满足于表单.在线咨询等获客方式,随着微商的火热,很多行业都玩起了个人微信号加粉的方式来获取潜在消费者. 随着手机的普遍,移动流量呈大幅上涨趋势,越来越多广告主将目光投向了信 ...

  4. web 安全:

    XSSXSS 全称“跨站脚本”,是注入攻击的一种. 其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本. 这时服务器端如果没有过 ...

  5. Rsync备份功能总结

    备份服务笔记====================================================================== Rsync是一款开源的.快速的.多功能的.可实 ...

  6. VUE系列一:VUE入门:搭建脚手架CLI(新建自己的一个VUE项目)

    一.VUE脚手架介绍 官方说明:Vue 提供了一个官方的 CLI,为单页面应用快速搭建 (SPA) 繁杂的脚手架.它为现代前端工作流提供了 batteries-included 的构建设置.只需要几分 ...

  7. 啊哈算法第四章第三节 层层递进-广度优先搜索 java实现

    package corejava; public class FourThree { static int [][]a=new int[50][50]; static int [][]b=new in ...

  8. 2018-2019-2 网络对抗技术 20165304 Exp6 信息搜集与漏洞扫描

    2018-2019-2 网络对抗技术 20165304 Exp6 信息搜集与漏洞扫描 原理与实践说明 1.实践原理 信息搜集:渗透测试中首先要做的重要事项之一,搜集关于目标机器的一切信息 间接收集 D ...

  9. arcgis point 随着 line类型的轨迹运动的动画

    animate : function(frampoint,topoint,speed = 60){ var path = topoint.geometry.paths[0]; var i = 1; v ...

  10. cmake安装

    下载之后 1.解压 root@zsh-linux:/opt#tar -zxvf  cmake-2.8.4.tar.gz 2.然后 cd 到cmake-2.8.4目录下  安装 root@zsh-lin ...