当前位置: 首页 > wzjs >正文

做微信公众号还是网站深圳做网站 信科便宜

做微信公众号还是网站,深圳做网站 信科便宜,网址被禁止访问怎么办,安徽网站建设怎么样1. 单一职责原则(SRP) 定义:一个类应当只负责一项职责。 WPF 案例:将视图逻辑和业务逻辑分离。 csharp // 视图模型 - 负责业务逻辑 public class UserViewModel {public string Username { get; set; }public string Passwor…

1. 单一职责原则(SRP)

定义:一个类应当只负责一项职责。

WPF 案例:将视图逻辑和业务逻辑分离。

csharp

// 视图模型 - 负责业务逻辑
public class UserViewModel
{public string Username { get; set; }public string Password { get; set; }public bool Authenticate(){// 验证逻辑return !string.IsNullOrEmpty(Username) && Password.Length >= 8;}
}// 视图 - 负责UI展示
public partial class LoginWindow : Window
{private UserViewModel viewModel;public LoginWindow(){InitializeComponent();viewModel = new UserViewModel();DataContext = viewModel;}private void LoginButton_Click(object sender, RoutedEventArgs e){if (viewModel.Authenticate()){MessageBox.Show("登录成功");}else{MessageBox.Show("登录失败");}}
}

原则体现UserViewModel类专注于处理用户认证的业务逻辑,而LoginWindow类则专注于处理 UI 交互和展示,两个类的职责泾渭分明。

2. 开闭原则(OCP)

定义:软件实体应当对扩展开放,对修改关闭。

WPF 案例:创建可扩展的报表生成器。

csharp

// 抽象报表接口
public interface IReportGenerator
{void GenerateReport();
}// PDF报表实现
public class PdfReportGenerator : IReportGenerator
{public void GenerateReport(){Console.WriteLine("生成PDF报表");}
}// Excel报表实现
public class ExcelReportGenerator : IReportGenerator
{public void GenerateReport(){Console.WriteLine("生成Excel报表");}
}// 报表工厂 - 负责创建报表生成器
public class ReportFactory
{public IReportGenerator CreateReportGenerator(string reportType){switch (reportType){case "PDF":return new PdfReportGenerator();case "Excel":return new ExcelReportGenerator();default:throw new ArgumentException("不支持的报表类型");}}
}

原则体现:若要新增 Word 报表,只需创建一个实现IReportGenerator接口的新类,无需对现有的ReportFactory类进行修改。

3. 里氏替换原则(LSP)

定义:子类能够替换父类且不影响程序的正确性。

WPF 案例:设计不同类型的按钮。

csharp

// 基础按钮类
public class ButtonBase
{public virtual void Click(){Console.WriteLine("按钮被点击");}
}// 圆形按钮类
public class RoundButton : ButtonBase
{public override void Click(){Console.WriteLine("圆形按钮被点击");}
}// 矩形按钮类
public class RectangleButton : ButtonBase
{public override void Click(){Console.WriteLine("矩形按钮被点击");}
}// 按钮使用示例
public void UseButton(ButtonBase button)
{button.Click();
}

原则体现:无论是RoundButton还是RectangleButton对象,都能够替换ButtonBase对象,并且不会引发异常。

4. 接口隔离原则(ISP)

定义:客户端不应依赖它不需要的接口。

WPF 案例:分离图形绘制接口。

csharp

// 绘图接口
public interface IDrawable
{void Draw();
}// 可填充接口
public interface IFillable
{void Fill();
}// 圆形类 - 实现绘图和填充接口
public class Circle : IDrawable, IFillable
{public void Draw(){Console.WriteLine("绘制圆形");}public void Fill(){Console.WriteLine("填充圆形");}
}// 线条类 - 只实现绘图接口
public class Line : IDrawable
{public void Draw(){Console.WriteLine("绘制线条");}
}

原则体现Line类无需实现它不需要的IFillable接口,只需依赖于它需要的IDrawable接口。

5. 依赖倒置原则(DIP)

定义:高层模块和低层模块都应依赖抽象,抽象不应依赖细节。

WPF 案例:实现可插拔的数据访问层。

csharp

// 数据访问接口
public interface IDataAccess
{string GetData();
}// SQL数据库实现
public class SqlDataAccess : IDataAccess
{public string GetData(){return "从SQL数据库获取的数据";}
}// XML文件实现
public class XmlDataAccess : IDataAccess
{public string GetData(){return "从XML文件获取的数据";}
}// 高层服务 - 依赖抽象接口
public class DataService
{private readonly IDataAccess dataAccess;public DataService(IDataAccess dataAccess){this.dataAccess = dataAccess;}public string FetchData(){return dataAccess.GetData();}
}

原则体现DataService类(高层模块)依赖于IDataAccess接口(抽象),而非具体的SqlDataAccessXmlDataAccess类(细节)。

6. 迪米特法则(LoD)

定义:一个对象应当对其他对象有最少的了解。

WPF 案例:通过中介者减少对象间的直接依赖。

csharp

// 中介者接口
public interface IMediator
{void SendMessage(string message, object sender);
}// 具体中介者
public class ChatMediator : IMediator
{private List<ChatUser> users = new List<ChatUser>();public void AddUser(ChatUser user){users.Add(user);}public void SendMessage(string message, object sender){foreach (var user in users){if (user != sender){user.ReceiveMessage(message);}}}
}// 用户类
public class ChatUser
{private readonly IMediator mediator;public ChatUser(IMediator mediator){this.mediator = mediator;}public void Send(string message){mediator.SendMessage(message, this);}public void ReceiveMessage(string message){Console.WriteLine($"收到消息: {message}");}
}

原则体现ChatUser类只需与IMediator交互,无需了解其他ChatUser对象的细节,从而减少了对象之间的直接依赖。


文章转载自:

http://5wdT63gl.pLgbh.cn
http://f8xnCceU.pLgbh.cn
http://NK4wNKnu.pLgbh.cn
http://Jb1bfEqy.pLgbh.cn
http://WdJg4nJz.pLgbh.cn
http://6zDmr4dc.pLgbh.cn
http://oEth6nEO.pLgbh.cn
http://BtOuTXe4.pLgbh.cn
http://u9GnxXmC.pLgbh.cn
http://RyKaI7Xb.pLgbh.cn
http://8401kxNd.pLgbh.cn
http://iBk4PIxy.pLgbh.cn
http://oBgc9Z69.pLgbh.cn
http://txVnfEfs.pLgbh.cn
http://XXF5kqnO.pLgbh.cn
http://XhyQYVH5.pLgbh.cn
http://KcSyqFZJ.pLgbh.cn
http://RZwTVE9U.pLgbh.cn
http://FAWVF5wr.pLgbh.cn
http://Qy0Ysb3n.pLgbh.cn
http://FWn4sEtW.pLgbh.cn
http://YWvoZ5To.pLgbh.cn
http://fjiGUF7M.pLgbh.cn
http://tsamvkbJ.pLgbh.cn
http://WFGDvvbT.pLgbh.cn
http://tuvrgGF5.pLgbh.cn
http://iDQZL7V7.pLgbh.cn
http://y6ObeOKQ.pLgbh.cn
http://ivWHatow.pLgbh.cn
http://arhWuiUT.pLgbh.cn
http://www.dtcms.com/wzjs/688109.html

相关文章:

  • 网站配色方案赣州企业做网站
  • 外国做爰网站双流网站建设
  • 西安网站开发培训价格APP网站建设什么用处
  • 做网站主图多少钱简易网站建设
  • 重庆专业网站建设首页排名网站被攻击 是vps问题还是dz程序
  • 如何跳过网站会员门头沟富阳网站建设
  • 网站后台模板修改用什么软件用服务器如何做网站
  • 网站开发项目教程答案网站被域名重定向
  • 福田网站制作设计html静态网站怎么放在网站上
  • 企业网站托管一年多少钱做网站编辑有前途
  • 浙江省住房城乡建设厅网站怎么制作网站小游戏
  • 学校网站建设运行情况wordpress 攻击
  • 最新网站开发软件开发公司已经卖出生地
  • 学做网站能赚多少钱官方网站营销
  • 河北省住房和建设厅网站公司网站设计注意什么
  • 网站的分类有哪些晋中市住房保障和城乡建设局网站
  • 情人节网站源码下载宁波建设网 提取业务
  • 网站服务器建设方案莱芜区宣传部网站
  • 摄影作品网站有哪些滕州做网站的多少
  • 商务网站开发流程有三个阶段深圳安鸿源建设网站
  • 上海可以做网站的公司重庆做腋臭骑士网站
  • 国家拨款农村建设查询的网站安阳包装设计
  • 有什么网站可以做微信支付宝支付电子商务网站建设教学实施建设
  • 青岛 网站开发百度指数关键词
  • 网络科技加我qq是干嘛seo排名优化教学
  • 网站怎么上传数据库烟台市住房和城乡建设局网站
  • 在什么地方可以接到做网站的活wordpress共享插件
  • 网站建设什么科目廊坊做网站教程
  • 东莞网站推广的公司做网站开发很赚钱吗
  • 炫酷网站推荐网优 是什么网站