# Model
class UserModel:
def __init__(self):
self.name = ""
self.email = ""
def save(self):
# 保存用户数据到数据库
pass
# View
class UserView:
def show_user_details(self, name, email):
print(f"User: {name}")
print(f"Email: {email}")
def get_user_input(self):
name = input("Enter name: ")
email = input("Enter email: ")
return name, email
# Controller
class UserController:
def __init__(self):
self.model = UserModel()
self.view = UserView()
def create_user(self):
name, email = self.view.get_user_input()
self.model.name = name
self.model.email = email
self.model.save()
self.view.show_user_details(name, email)
Web开发:
移动开发:
桌面应用:
class UserModel {
id: number;
name: string;
email: string;
constructor(data: any) {
this.id = data.id;
this.name = data.name;
this.email = data.email;
}
async save() {
// 保存数据到服务器
}
}
{{ viewModel.userStatus }}
class UserViewModel {
private model: UserModel;
public userName: string = '';
public userStatus: string = '';
constructor(model: UserModel) {
this.model = model;
this.userName = model.name;
}
async saveUser() {
try {
this.userStatus = '保存中...';
await this.model.save();
this.userStatus = '保存成功';
} catch (error) {
this.userStatus = '保存失败';
}
}
}
全名: {{ fullName }}
// ViewModel中的命令
class ViewModel {
saveCommand = {
execute: async () => {
// 执行保存操作
},
canExecute: () => {
// 判断是否可以执行
return this.isValid;
}
}
}
// Vue.js中的状态管理
const store = {
state: reactive({
count: 0
}),
increment() {
this.state.count++
}
}
{{ user.displayName }}
// 组件类
@Component({
selector: 'app-user',
template: `
{{user.displayName}}
`
})
class UserComponent {
user = {
name: '',
get displayName() {
return `用户: ${this.name}`;
}
};
saveUser() {
// 保存用户信息
}
}
class UserModel {
private id: number;
private name: string;
private email: string;
constructor(data: any) {
this.id = data.id;
this.name = data.name;
this.email = data.email;
}
async save(): Promise<boolean> {
// 保存数据到服务器
return true;
}
validate(): boolean {
return this.email.includes('@');
}
}
// 视图接口
interface IUserView {
setName(name: string): void;
setEmail(email: string): void;
showError(message: string): void;
showSuccess(message: string): void;
}
// 具体视图实现
class UserView implements IUserView {
private nameElement: HTMLInputElement;
private emailElement: HTMLInputElement;
private presenter: UserPresenter;
constructor() {
this.presenter = new UserPresenter(this);
this.bindEvents();
}
private bindEvents() {
document.getElementById('saveButton')
.addEventListener('click', () => {
this.presenter.onSaveClicked();
});
}
setName(name: string): void {
this.nameElement.value = name;
}
setEmail(email: string): void {
this.emailElement.value = email;
}
showError(message: string): void {
alert(message);
}
showSuccess(message: string): void {
alert(message);
}
}
class UserPresenter {
private view: IUserView;
private model: UserModel;
constructor(view: IUserView) {
this.view = view;
this.model = new UserModel({});
}
async onSaveClicked() {
if (!this.model.validate()) {
this.view.showError('数据验证失败');
return;
}
try {
const success = await this.model.save();
if (success) {
this.view.showSuccess('保存成功');
} else {
this.view.showError('保存失败');
}
} catch (error) {
this.view.showError('发生错误');
}
}
}
// 视图层只负责UI展示
interface IView {
render(data: any): void;
showLoading(): void;
hideLoading(): void;
}
// Presenter层处理业务逻辑
class Presenter {
private view: IView;
private model: Model;
handleUserAction() {
this.view.showLoading();
this.model.process()
.then(data => {
this.view.render(data);
this.view.hideLoading();
});
}
}
// 定义视图接口
interface ILoginView {
getUserName(): string;
getPassword(): string;
showError(message: string): void;
navigateToHome(): void;
}
// 实现视图接口
class LoginActivity implements ILoginView {
private presenter: LoginPresenter;
constructor() {
this.presenter = new LoginPresenter(this);
}
getUserName(): string {
return document.getElementById('username').value;
}
getPassword(): string {
return document.getElementById('password').value;
}
showError(message: string): void {
// 显示错误信息
}
navigateToHome(): void {
// 导航到主页
}
}
// View接口
interface MainView {
fun showProgress()
fun hideProgress()
fun setItems(items: List<String>)
}
// Presenter
class MainPresenter(private val view: MainView) {
private val model = MainModel()
fun loadItems() {
view.showProgress()
model.getItems { items ->
view.hideProgress()
view.setItems(items)
}
}
}
// Activity实现View接口
class MainActivity : AppCompatActivity(), MainView {
private lateinit var presenter: MainPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
presenter = MainPresenter(this)
presenter.loadItems()
}
override fun showProgress() {
progressBar.visibility = View.VISIBLE
}
override fun hideProgress() {
progressBar.visibility = View.GONE
}
override fun setItems(items: List<String>) {
// 更新UI
}
}
// View接口
interface IProductView {
displayProducts(products: Product[]): void;
showLoadingIndicator(): void;
hideLoadingIndicator(): void;
}
// Presenter
class ProductPresenter {
constructor(
private view: IProductView,
private model: ProductModel
) {}
async loadProducts() {
this.view.showLoadingIndicator();
try {
const products = await this.model.getProducts();
this.view.displayProducts(products);
} finally {
this.view.hideLoadingIndicator();
}
}
}
// View实现
class ProductPage implements IProductView {
private presenter: ProductPresenter;
constructor() {
this.presenter = new ProductPresenter(this, new ProductModel());
}
displayProducts(products: Product[]): void {
// 渲染产品列表
}
showLoadingIndicator(): void {
// 显示加载指示器
}
hideLoadingIndicator(): void {
// 隐藏加载指示器
}
}