diff --git a/src/ch17-03-oo-design-patterns.md b/src/ch17-03-oo-design-patterns.md index 3893248..75ff2a8 100644 --- a/src/ch17-03-oo-design-patterns.md +++ b/src/ch17-03-oo-design-patterns.md @@ -75,14 +75,7 @@ impl State for Draft {} ### 存放Post的文本内容 -In the `Post::new` function, we set the `content` field to a new, empty -`String`. In Listing 17-11, we showed that we want to be able to call a method -named `add_text` and pass a `&str` to it to add that text to the content of the -blog post. We're choosing to implement this as a method rather than exposing -the `content` field as `pub` because we want to be able to control how the -`content` field's data is read by implementing a method later. The `add_text` -method is pretty straightforward though, let's add the implementation in -Listing 17-13 to the `impl Post` block: +在`Post::new`函数中, 我们把`content`字段设为一个新的空字符串. 在列表17-11中, 我们演示我们想能调用一个`add_text`方法, 通过传递一个`&str`到这个方法中来把文字添加到博客的内容中. 我们选择把这个实现为一个方法而不是把`content`暴露成一个`pub`型的字段是因为稍后我们想实现一个方法来控制对`content`字段内容的读取. `add_text`方法很容易理解, 让我们在列表17-13中来把它的实现添加到`impl Post`块中: Filename: src/lib.rs @@ -99,22 +92,13 @@ impl Post { } ``` -Listing 17-13: Implementing the `add_text` method to add -text to a post's `content` +列表17-13: 实现`add_text`方法来把文字添加到博客的`content`方法中 -`add_text` takes a mutable reference to `self`, since we're changing the `Post` -instance that we're calling `add_text` on. We then call `push_str` on the -`String` in `content` and pass the `text` argument to add to the saved -`content`. This isn't part of the state pattern since its behavior doesn't -depend on the state that the post is in. The `add_text` method doesn't interact -with the `state` field at all, but it is part of the behavior we want to -support. +因为当调用`add_text`方法时, 我们将会改变`Post`实例, 所以我们用一个可变的`self`引用作为参数. 然后我们调用`content`的`String`类型上的`push_str`方法, 传入`text`参数来把它添加到调用方法的实例的`content`上. 这不是状态模式的一部分, 因为它的行为并不依赖博客所处的状态. `add_text`方法根本不与`state`字段交互, 但它是我们想提供的功能的一部分. -### Content of a Draft Post is Empty +### 草稿博客的内容为空 -After we've called `add_text` and added some content to our post, we still want -the `content` method to return an empty string slice since the post is still in -the draft state, as shown on line 8 of Listing 17-11. For now, let's implement +列表17-11的第八行显示, 在我们调用`add_text`把某些内容添加到博客后, 当博客仍然处于草稿状态时, 我们仍然希望`content`方法返回一个空字符串切片. For now, let's implement the `content` method with the simplest thing that will fulfill this requirement: always returning an empty string slice. We're going to change this later once we implement the ability to change a post's state to be published. With what we