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

建设银行官方网站登录网址学做粤菜的网站有哪些

建设银行官方网站登录网址,学做粤菜的网站有哪些,产品销售类网站 模板,如何注册一个免费域名设计模式知道#xff0c;套路是个啥#xff1f;关于设计模式的说法#xff0c;网上一搜一大堆#xff0c;咱就不再去说了。我的理解#xff0c;设计模式就是很多NB的大佬们总结出来的#xff0c;用来处理特定情况的标准解决方案。那既然是标准方案#xff0c;就一定会有… 设计模式知道套路是个啥关于设计模式的说法网上一搜一大堆咱就不再去说了。我的理解设计模式就是很多NB的大佬们总结出来的用来处理特定情况的标准解决方案。那既然是标准方案就一定会有套路会有标准的样子。几种常见的设计模式都有各自的套路模板。下面进入主题咱们一个一个来说。一、抽象工厂模式抽象工厂主要的场景是创建一系列相关或相似的对象。注意这个相关或相似。因为有这个特性我们就可以抽取出共同点来形成接口或抽象类然后通过这个接口或抽象类来派生出各个对象。为什么叫抽象工厂不知道而且不重要。在我看来这只是个名字记下就好。一个东西出来总要有个名字的有个人跑出来说就叫抽象工厂吧。于是就叫抽象工厂了。就像一个人做了一个网站让别人在上面卖东西后来做大了需要吹NB了得给这个经营方式起个名字于是B2C 就出现了。现在人们创业做电商头一件事先讨论做 B2B 还是 B2C。做反了。先做吧挣钱要紧。做大了你说叫什么都会有人听、有人信。说跑题了:P先写几个类型包括接口和实体类后面会用到// 接口定义 public interface ILaptop {void GetInfo(); } public interface IMobile {void GetInfo(); }// 实体类一 public class MateBook : ILaptop {public void GetInfo(){Console.WriteLine(I am MateBook);} } public class Mac : ILaptop {public void GetInfo(){Console.WriteLine(I am Mac);} }// 实体类二 public class Mate : IMobile {public void GetInfo(){Console.WriteLine(I am Mate);} } public class IPhone : IMobile {public void GetInfo(){Console.WriteLine(I am IPhone);} }有了上面的类型我们来看看抽象工厂的套路。定义public interface IFactory {ILaptop CreateLaptop();IMobile CreateMobile(); } public class FactoryA : IFactory {public ILaptop CreateLaptop(){return new MateBook();}public IMobile CreateMobile(){return new Mate();} } public class FactoryB : IFactory {public ILaptop CreateLaptop(){return new Mac();}public IMobile CreateMobile(){return new IPhone();} }调用public static class Example {public static void ExampleTest(){var factoryA  new FactoryA();var laptopA  factoryA.CreateLaptop();var mobileA  factoryA.CreateMobile();laptopA.GetName();mobileA.GetName();var factoryB  new FactoryB();var laptopB  factoryB.CreateLaptop();var mobileB  factoryB.CreateMobile();laptopB.GetName();mobileB.GetName();}//result ://I am MateBook//I am Mate//I am Mac//I am IPhone }这个模式里面核心的部分就是工厂接口的定义public interface IFactory {ILaptop CreateLaptop();IMobile CreateMobile(); }在这个工厂接口中加入了多个相似的接口。于是调用端可以很简单的以类似的方式去调用而工厂实体中对内部引用的实体进行区分。一个典型的场景是一个程序对着很多种数据库。这样的情况可以在工厂实体中区分具体连接哪种数据库而内部的引用实体则各自对应不同的数据库。外部调用时只需要在初始化时确认使用哪种数据库后面的 CRUD 操作就直接使用就成调用端不需要考虑数据库的区别。事实上这也是抽象工厂用的最多的场景。二、工厂模式去掉了抽象两个字居然还是一个模式而且是一个不同的模式。这个名字起的够混乱。不过老实说工厂模式跟抽象工厂模式很像区别是抽象工厂模式是在工厂模式的基础上又做了一层抽象。看套路public interface IFactory {ILaptop CreateLaptop(); } public class FactoryA : IFactory {public ILaptop CreateLaptop(){return new MateBook();} } public class FactoryB : IFactory {public ILaptop CreateLaptop(){return new Mac();} } public static class Example {public static void Test(){var factoryA  new FactoryA();var laptopA  factoryA.CreateLaptop();laptopA.GetName();var factoryB  new FactoryA();var laptopB  factoryB.CreateLaptop();laptopB.GetName();}//result ://I am MateBook//I am Mac }看到了吧跟抽象工厂确实很相似。不过在使用上工厂模式用得会更多。任何类都可以按工厂模式来写。这个模式最大的作用是把定义和实体做了分层。开发时可以一部分人去定义接口而另一部分人去实现这个接口。而且工作模式可以随时扩展为抽象工厂。比方一开始只是可能有多种数据库但具体是哪些数据库还没确定就可以先按工厂模式写等数据库定下来随时就很容易转为抽象工厂了。三、建造者模式这个名称起的更不知所云了就因为一个 Builder?其实他说的是这么个事。我们经常看到这样的代码var mobile  new MobileBuilder().WithBrand(Apple).WithModel(13Pro).WithMemory(512G).Build();看着是不是很洋气来看看这个套路// 这就是个数据模型 public class Mobile {public string Brand { get; set; }public string Model { get; set; }public string Memory { get; set; } }// 这才是 Builder 的定义 public class MobileBuilder {private readonly Mobile _mobile  new Mobile();public MobileBuilder WithBrand(string brand){_mobile.Brand  brand;return this;}public MobileBuilder WithModel(string model){_mobile.Model  model;return this;}public MobileBuilder WithMemory(string memory){_mobile.Memory  memory;return this;}public Mobile Build(){return _mobile;} }然后就可以这样调用了public static class Example {public static void Test(){var mobile  new MobileBuilder().WithBrand(Apple).WithModel(13Pro).WithMemory(512G).Build();Console.WriteLine(mobile.ToJson());}//result ://{Brand:Apple,Model:13Pro,Memory:512G} }个人而言我很喜欢这个套路没有别的就是洋气非常的洋气。应用场景也非常多所有数据的 DTO都可以么写。四、原型模式这个模式听着会有点陌生。看过一些文章也把它归为是创建型模式。实际上我更倾向于把它看作是一种代码结构而不是模式。这种结构最大的作用是复制 - 通过复制一个存在的实例来创建新实例。代码是这样的public class MobilePackage {public string Color { get; set; }public Mobile Mobile { get; set; }// 下面才是模式代码public MobilePackage ShallowCopy(){return (MobilePackage)this.MemberwiseClone();}public MobilePackage DeepCopy(){var clone  (MobilePackage)this.MemberwiseClone();clone.Color  new string(Color);clone.Mobile  new Mobile{Brand  new string(Mobile.Brand),Model  new string(Mobile.Model),Memory  new string(Mobile.Memory),};return clone;} }看看其实就是一段复制代码。但是要注意对于深拷贝和浅拷贝涉及到指针和引用如果你不熟悉了解后再用。看一下上面的结果public static class Example {public static void Test(){var mobilePackage  new MobilePackage{Color  White,Mobile  new Mobile{Brand  Apple,Model  13Pro,Memory  512G,}};var shallowCopied  mobilePackage.ShallowCopy();var deepCopied  mobilePackage.DeepCopy();mobilePackage.Color  Black;mobilePackage.Mobile.Brand  Huawei;mobilePackage.Mobile.Model  Mate;Console.WriteLine(mobilePackage.ToJson());Console.WriteLine(shallowCopied.ToJson());Console.WriteLine(deepCopied.ToJson());}//result://{Color:Black,Mobile:{Brand:Huawei,Model:Mate,Memory:512G}}//{Color:White,Mobile:{Brand:Huawei,Model:Mate,Memory:512G}}//{Color:White,Mobile:{Brand:Apple,Model:13Pro,Memory:512G}} }结果和你理解的是不是一样如果不一样去研究一下值和引用的区别。另外C# 10 里新出来的 Record就是一个典型的原型模式的类型也可以了解一下。五、单例模式单例模式也是一个用处非常大的模式而且这个名字起得挺直白。单例模式简单点说就是不管你 new 多少回实际应用全局内存中只会有一份实例。套路代码特别简单public sealed class Singleton {private static Singleton _instance;private static readonly object _locker  new object();private Singleton(){}public static Singleton GetInstance(){if (_instance  null){lock (_locker){if (_instance  null){_instance  new Singleton();}}}return _instance;} }这里有两个注意点类声明用到 sealed 关键字以确保这个类不会被派生。类构造函数用了 private以确保这个类不会被 new。这本身与单例无关只是通过这种方式来表明这是一个单例。控制单例的最核心的代码其实是下面的 GetInstance() 方法。调用时就是下面一行代码Singleton singleton  Singleton.GetInstance();就OK了。设计模式有很多种对应的套路也有很多。其中有一些是简单无脑的套路像上面的单例而另一些就会比较复杂。不过既然是套路总是有固定的代码或结构可循的。我这个主题打算分几篇来写。这是第一篇。最后做个小注解套路虽简单也要吃透了再用。而且有时候简单的代码就能很好地完成任务一定不要过度使用。喜欢就来个三连让更多人因你而受益
http://www.pierceye.com/news/130513/

相关文章:

  • 伊利网站建设评价做的最好的宠物网站
  • 沈阳的网站制作公司哪家好常用设计资源网站
  • 做网站需要什么技术文化传媒公司 网站备案
  • 郑州市建设厅网站html5 网站开发定制
  • 网站制作网站建站公司用wordpress
  • 做资讯网站盈利措美网站建设
  • 山东建设工程执业证书查询网站建网是什么
  • 大型服装网站建设wordpress留言板模版
  • 延安做网站沈阳学网站制作学校
  • 网站添加新闻网站免费正能量软件不良
  • asp c 网站开发互动网门户网站建设
  • 图书馆网站结构怎么做国外超酷设计网站
  • 网站开发软件搭配学室内设计去哪好
  • 南通营销网站制作河南省大型项目建设办公室网站
  • 黄山网站建设怎么做seo快速优化技术
  • 百度有做企业网站吗ppt设计主题怎么设置
  • 网页设计与网站开发pdf网站个人建设
  • ip138禁止查询该域名商务网站建设组成包括网站优化
  • 百度做网站续费费用seo分析工具有哪些
  • 威胁网站检测平台建设郑州seo服务
  • 怎么设立网站赚广告费合肥新站区有做网站的吗
  • 管理系统 网站模板网站建立不安全
  • 模板网站的域名是什么意思百度教育智能小程序
  • 哪里有做配音的兼职网站wordpress菜单图标特效
  • 怎样自创广告网站海南网站建设推广公司哪家好
  • 网站开发团队人员网站建设开票属于什么服务
  • 学做网站初入门教程上海网站建设 觉策动力
  • 丰台建站公司做一个企业网站需要哪些技术
  • 黑色网站模板怎么写app程序
  • 常州建设局网站首页网站开发需求文档模板带er图