import Foundation func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } func swapTwoStrings(inout a: String, inout b: String) { let temporaryA = a
import Foundation class Sum : NSObject, NSCopying { var resultsCache: [[Int]]; var firstValue:Int; var secondValue:Int; init(first:Int, second:Int) { resultsCache = [[Int]
class RentalCar { private var nameBV:String; private var passengersBV:Int; private var priceBV:Float; private init(name:String, passengers:Int, price:Float) { self.nameBV
It allows a calling component to obtain a family or group of related objects without needing to know which classes were used to create them. 每一层的创建都是工厂,并且客户端和中间层是不知道具体零件的类型的。 client: let car = Car(car
利用类构造函数默认参数,创建一个类。 之所以用Builder Pattern是因为要根据不同属性来创建不同的对象。 正如如下步骤:1.name 2.选择一个产品 3.客户定制一个产品 client: // Step 1 - Ask for name let name ="Joe"; // Step 2 - Select a Product let builder =BurgerBuilder.ge
This pattern allows two objects that provide related functionality to work together even when they have incompatible APIs. Diagram: client: let search = SearchTool(dataSources: SalesDataSource(), Deve
装饰者模式:多个类派生于一个基础类,这几个类可以嵌套构造来装饰。 I described the decorator pattern and explained how it can be used to change thebehavior of objects at runtime. The decorator pattern is especially useful when dealing
It shows you how the composite pattern can be used so that different kinds of objects in a tree data structure can be treated consistently. 复合模式: 这个设计模式为你展示了不同类型的在树中的数据结构如何一致的对待。 client: let doorWin
Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。 client: import Foundation; let facade =PirateFacade(); let prize = facade.getTreasure(TreasureTypes.SHIP); if (pri
The flyweight pattern is applied when a number of similar objects all rely on the same set of datavalues. Rather than create a new set of data valued for each of the objects, the flyweight patternshar
I describe the proxy pattern in this chapter, which is used when an object is required to act as an interface to another object or resource. There are three main ways in which the proxy pattern is app
The chain of responsibility pattern is useful when there are multiple objects that could take responsibility for a request but you don’t want to expose details of those objects to the calling componen
The command pattern provides a mechanism by which details of how to invoke a method can beencapsulated so that the method can be invoked later or by a different component. 命令模式:把每一次执行的命令放到一个队列里,undo
State Machine in React Component React的工程实践中大多数团队都只关注了state该怎么存放的问题,没有意识到真正导致问题复杂的是组合状态机,后面这句话对于UI而言是放之四海皆准的; 一个React Component对象作为UI层元素,在很多情况下我们并不希望在状态迁移时创建新的实例替代旧的,这直接意味着UI组件和状态机之间是binding关系而不是compo