软件设计模式(持续更新)

mac2024-06-06  57

软件设计模式

软件设计模式(Design Pattern,或称软件设计典范)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。(摘自菜鸟教程)

下面简要介绍几个主流的软件设计模式:

MVC

全名Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

该模式将业务逻辑、数据与界面显示分离开来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。

以下详解三部分各自的功能。

View指用户看到并与之交互的界面。比如由html元素组成的网页界面或者软件的客户端界面。一个应用程序可能有多个界面,对应不同的用户需求,在视图中其实并没有任何的数据处理,它仅仅是用于与用户交互,得到用户的输入并传给控制器或者输出信息。

Model指模型,表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

Controller指控制器,接受用户的输入并调用模型和视图去完成任务。控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

下图说明了三者之间的调用关系:

例如,我们在C#下编写一个简单的用户管理程序:

Main就相当于我们的View,我们在此编写与用户的交互命令,如:

UserController uc = new UserController(); Console.WriteLine("---------用户信息管理系统--------"); while(true) { Console.WriteLine("请按指示输入命令:增加-1 修改-2 删除-3 查看-4"); string command = Console.ReadLine(); switch (command) { case "1": uc.Add(); break; ... } }

当然,在Main开头,我们会实例化一个UserController对象。

在类UserController中,我们编写实现用户相应需求的方法:

class UserController { List<User> userList = new List<User>(); public void Add() { ... } public void Remove() { ... } ... }

然而,这些方法是指向User中的方法,在UserController这一层,正如上文所说,是根据View返回的用户指令,决定调用什么方法去实现,真正修改数据的方法,在User中:

以上部分内容来自:https://www.cnblogs.com/diyunfei/p/6752618.html,有删改。

 

设计模式六大原则

里氏转换原则

以C#为例:

子类对象可以直接赋值给父类变量。

Father 对象名 = new Son();

子类对象可以调用父类成员,反之不行。

若父类对象中装的是子类对象,则可将该父类对象强行转为子类对象。

直接转换:

Son 子类对象名 = (Son) 父类对象名;

还有转换对象所属类的关键字:is和as

两者都会进行转换,若转换成功,is返回True,as返回转换后的对象,若失败,is返回False,as返回null。

bool f = 父类对象名 is Son; Son 子类对象名 = 父类对象名 as Son;
最新回复(0)