// Model
struct Todo: Identifiable {
    let id = UUID()
    var text: String
}
 
// ViewModel
class TodoViewModel: ObservableObject {
    @Published var todos: [Todo] = []
    @Published var newTodoText = ""
    
    func addTodo() {
        let newTodo = Todo(text: newTodoText)
        todos.append(newTodo)
        newTodoText = ""
    }
}
 
// View
struct TodoView: View {
    @StateObject var viewModel = TodoViewModel()
    
    var body: some View {
        VStack {
            TextField("Enter todo", text: $viewModel.newTodoText)
            Button("Add Todo") {
                viewModel.addTodo()
            }
            List(viewModel.todos) { todo in
                Text(todo.text)
            }
        }
    }
}