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

旅游网站策划书范文青岛市公共资源交易网

旅游网站策划书范文,青岛市公共资源交易网,发布产品的免费平台有哪些,计算机编程入门文章目录 前言1、单例模式 (Singleton)1.1 详细说明1.2 应用场景示例 2、工厂模式 (Factory Method)2.1 详细说明2.2 应用场景示例 3、观察者模式 (Observer)3.1 详细说明3.2 应用场景示例 4、策略模式 (Strategy)4.1 详细说明4.2 应用场景示例 5、适配器模式 (Adapter)5.1 详细… 文章目录 前言1、单例模式 (Singleton)1.1 详细说明1.2 应用场景示例 2、工厂模式 (Factory Method)2.1 详细说明2.2 应用场景示例 3、观察者模式 (Observer)3.1 详细说明3.2 应用场景示例 4、策略模式 (Strategy)4.1 详细说明4.2 应用场景示例 5、适配器模式 (Adapter)5.1 详细说明5.2 应用场景示例 总结 前言 在C#开发中设计模式是一种被广泛应用的软件设计思想它可以帮助我们提高代码的可维护性、可扩展性和可复用性。本文将详细介绍C#中几种常见的软件设计模式并提供每种模式的具体应用场景示例以展示其在实际项目中的应用效果和益处。 1、单例模式 (Singleton) 1.1 详细说明 单例模式确保一个类只有一个实例并提供一个全局访问点。这个模式通常用于那些只需要一个实例且频繁使用的对象例如数据库连接池、日志对象、配置对象等。 1.2 应用场景示例 场景1 应用程序需要一个全局的配置管理器来管理所有的配置信息。 public class ConfigurationManager {private static ConfigurationManager _instance;private ConfigurationManager(){// 初始化配置}public static ConfigurationManager Instance{get{if (_instance null){_instance new ConfigurationManager();}return _instance;}}// 配置操作方法 }场景2 在一个多线程的环境下需要确保某个资源只被创建一次并在全局范围内访问。比如数据库连接池的实现。 public class Singleton {private static Singleton instance;private static readonly object lockObject new object();private Singleton() { }public static Singleton Instance{get{lock (lockObject){if (instance null){instance new Singleton();}}return instance;}} } 2、工厂模式 (Factory Method) 2.1 详细说明 工厂模式定义了一个用于创建对象的接口但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类中进行。 2.2 应用场景示例 场景 应用程序需要根据用户的选择创建不同类型的图形对象如圆形、矩形。 public interface IGraphic {void Draw(); }public class Circle : IGraphic {public void Draw(){Console.WriteLine(Drawing a circle);} }public class Rectangle : IGraphic {public void Draw(){Console.WriteLine(Drawing a rectangle);} }public abstract class Factory {public abstract IGraphic CreateGraphic(string type); }public class CircleFactory : Factory {public override IGraphic CreateGraphic(string type){return new Circle();} }public class RectangleFactory : Factory {public override IGraphic CreateGraphic(string type){return new Rectangle();} }// 使用 IFactory factory new CircleFactory(); IGraphic graphic factory.CreateGraphic(Circle); graphic.Draw(); // 输出 Drawing a circle 3、观察者模式 (Observer) 3.1 详细说明 观察者模式定义了一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都将得到通知并自动更新。 3.2 应用场景示例 场景1 股票市场应用程序中当股票价格发生变化时需要通知所有订阅了该股票的投资者。 public interface IObserver {void Update(float stockPrice); }public interface ISubject {void Attach(IObserver observer);void Detach(IObserver observer);void Notify(); }public class StockMarket : ISubject {private ListIObserver observers new ListIObserver();private float stockPrice;public void Attach(IObserver observer){observers.Add(observer);}public void Detach(IObserver observer){observers.Remove(observer);}public void Notify(){foreach (var observer in observers){observer.Update(stockPrice);}}public void SetStockPrice(float price){stockPrice price;Notify();} }public class Investor : IObserver {public void Update(float stockPrice){Console.WriteLine($Stock price updated to: {stockPrice});} }// 使用 StockMarket stockMarket new StockMarket(); Investor investor1 new Investor(); Investor investor2 new Investor();stockMarket.Attach(investor1); stockMarket.Attach(investor2);stockMarket.SetStockPrice(100.0f); // 两个投资者都将收到通知 场景2 在一个新闻发布订阅系统中当有新的新闻发布时订阅者可以自动收到通知并显示最新的新闻内容。 public interface IObserver {void Update(string news); }public interface ISubject {void Attach(IObserver observer);void Detach(IObserver observer);void Notify(string news); }public class NewsPublisher : ISubject {private ListIObserver observers new ListIObserver();private string news;public void Attach(IObserver observer){observers.Add(observer);}public void Detach(IObserver observer){observers.Remove(observer);}public void Notify(string news){this.news news;foreach (var observer in observers){observer.Update(news);}} }public class NewsSubscriber : IObserver {private string name;public NewsSubscriber(string name){this.name name;}public void Update(string news){Console.WriteLine(${name} received news: {news});} } 4、策略模式 (Strategy) 4.1 详细说明 策略模式定义了一系列算法并将每一个算法封装起来以便它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。 4.2 应用场景示例 场景 一个文本编辑器需要支持多种格式的文件保存方式如纯文本、HTML、Markdown等。 public abstract class FileSaverStrategy {public abstract void Save(string content, string filePath); }public class TextFileSaver : FileSaverStrategy {public override void Save(string content, string filePath){using (StreamWriter sw File.CreateText(filePath)){sw.Write(content);}} }public class HtmlFileSaver : FileSaverStrategy {public override void Save(string content, string filePath){// HTML 保存逻辑} }public class MarkdownFileSaver : FileSaverStrategy {public override void Save(string content, string filePath){// Markdown 保存逻辑} }public class Document {private FileSaverStrategy saver;public void SetSaver(FileSaverStrategy saver){this.saver saver;}public void SaveDocument(string content, string filePath){saver.Save(content, filePath);} }// 使用 Document document new Document(); document.SetSaver(new TextFileSaver()); document.SaveDocument(Hello, World!, hello.txt);// later on, if we want to save as HTML document.SetSaver(new HtmlFileSaver()); document.SaveDocument(pHello, World!/p, hello.html); 5、适配器模式 (Adapter) 5.1 详细说明 适配器模式将一个类的接口转换成客户端期望的另一个接口。适配器模式让原本接口不兼容的类可以一起工作。 5.2 应用场景示例 场景 有一个旧式的音乐播放器只能播放MP3格式的音乐但现在需要播放MP4格式的音乐。 public interface IMusicPlayer {void Play(string fileExtension); }public class Mp3MusicPlayer : IMusicPlayer {public void Play(string fileExtension){if (fileExtension mp3){Console.WriteLine(Playing MP3 music);}} }public class Mp4MusicPlayer : IMusicPlayer {public void Play(string fileExtension){if (fileExtension mp4){Console.WriteLine(Playing MP4 music);}} }public class Mp4ToMp3Adapter : IMusicPlayer {private Mp4MusicPlayer mp4Player;public Mp4ToMp3Adapter(Mp4MusicPlayer mp4Player){this.mp4Player mp4Player;}public void Play(string fileExtension){if (fileExtension mp3){// 将MP4音乐转换为MP3音乐mp4Player.Play(mp4);}} }// 使用 IMusicPlayer musicPlayer new Mp3MusicPlayer(); musicPlayer.Play(mp3); // 输出Playing MP3 musicmusicPlayer new Mp4ToMp3Adapter(new Mp4MusicPlayer()); musicPlayer.Play(mp3); // 输出Playing MP4 music通过适配器转换 总结 通过使用这些常见的设计模式我们可以更好地组织和管理代码提高代码的可读性、可维护性和可扩展性。每个设计模式都有其独特的应用场景和优势在实际项目中灵活运用可以有效解决各种问题。希望本文能够帮助读者理解C#设计模式的多样性并在实践中加以应用。
http://www.dnsts.com.cn/news/261333.html

相关文章:

  • 冀州网站优化我的世界做圆网站
  • 哪些网站是做免费推广的应聘网站优化的简历怎么做
  • 规模大的企业建站wordpress商城开源
  • 上饶招聘网站建设公司雪梨直播
  • 购物网站后台管理模板网站后台邮箱设置
  • wordpress商城平台企业seo如何优化
  • wordpress站点app开发广州网站建设高端网
  • 手机官方网站衡水如何做企业网站
  • 整页型网站北京 网站建设 公司
  • 想要导航提示页网站推广玉环做网站有哪些
  • 网站编写语言下载微信公众号平台官网
  • 网站建设培训费用电子商务网站建设规划设计任务书
  • 凉州区新农村建设网站网站搜索不到了
  • 做母亲节网站的素材wordpress开发上传图片
  • 栾城seo整站排名网站开发一键上架淘宝
  • icp备案网站信息建设什么网站赚钱
  • 网站服务器基本要素做网站到底需要什么
  • 消防微型建设标准的网站是多少怎么弄网址
  • 巴中网站制作网站兼容设置
  • 天津电商网站制作移动网站优化排名
  • 网站建设服务案例网站排名的优化
  • 手机百度网盘网页版登录入口seo优化团队
  • 视频网站是怎么做的php学校网站模板
  • 建立主题网站的顺序是wordpress采集查卷
  • 阿里巴巴有几个网站是做外贸的全国最新工商企业名录
  • 一个网站域名ipwordpress手机主题漂亮
  • 网站开发的整个流程免费手机wap建站
  • 自助建设网站平台wordpress 谷歌seo
  • 建设信息门户网站网页设计基础课件
  • 顺德网站制作案例信息网站建设中最重要的环节是什么