随笔分类 -  DesignPatterns

设计模式
摘要:DesignPartten_Decoration_Dynamic_Composition 先定义个一个形状的接口,可以转换为字符串 interface IShape { string AsString(); } 添加各种形状 class Circel:IShape { float ridus; pu 阅读全文
posted @ 2022-05-18 15:19 后跳 阅读(24) 评论(0) 推荐(0)
摘要:装饰器模式 Multiple Inheritance多重继承 鸟 会飞 蜥蜴 会爬行 龙 能飞也能爬行 C# 不支持多继承,单可以多实现、所以我们这样做 public interface IBrid { void Fly(); } public class Brid: IBrid { public 阅读全文
posted @ 2022-05-17 16:16 后跳 阅读(38) 评论(0) 推荐(0)
摘要:装饰者模式: 例子:对StringBuilder进行装饰 public class MyString { private StringBuilder sb = new StringBuilder(); public static implicit operator MyString(string s 阅读全文
posted @ 2022-05-17 13:57 后跳 阅读(24) 评论(0) 推荐(0)
摘要:例子:对应 https://www.cnblogs.com/Zingu/p/16256988.html enum Color { Yellow, Red, Green } enum Size { Small, Medium, Large, Yuge } class Product { public 阅读全文
posted @ 2022-05-14 17:29 后跳 阅读(37) 评论(0) 推荐(0)
摘要:复合模式 神经元和神经元组 public static class ExtensitionNeural { //public static void ShowNeuralsIn(this Neural l, int dent) //{ // Console.WriteLine($"{new stri 阅读全文
posted @ 2022-05-14 16:06 后跳 阅读(81) 评论(0) 推荐(0)
摘要:class GraphicObject { public virtual string GroupName { get; set; }= "Group"; public string Color; private Lazy<List<GraphicObject>> graphicObjects = 阅读全文
posted @ 2022-05-14 13:08 后跳 阅读(71) 评论(0) 推荐(0)
摘要:桥: interface IRenderer { void RenderCircle(float radius); } class VectorRenderder : IRenderer { public void RenderCircle(float radius) { Console.Write 阅读全文
posted @ 2022-05-13 17:44 后跳 阅读(36) 评论(0) 推荐(0)
摘要:适配器模式+AutoFac interface ICommand { void Excute(); } class OpenCommand : ICommand { public void Excute() { Console.Write("this is Opened"); } } class S 阅读全文
posted @ 2022-05-13 16:16 后跳 阅读(46) 评论(0) 推荐(0)
摘要:适配器模式: 我国规定民用交流电压是220V(+10% -15%),就是说交流220V电压正常范围在187V--242V 但是每种电器的接收的电压都不一致: 1.电脑 2手机 3.空调 虽然输入电压是相同的220V 但是电器内部少有能直接接收220V电压的零件。 再举个例子。或者说你的手机出国也能充 阅读全文
posted @ 2022-05-13 10:38 后跳 阅读(549) 评论(0) 推荐(0)
摘要:单例模式 线程检查: public sealed class PreThreadSingleton { private static ThreadLocal<PreThreadSingleton> local = new ThreadLocal<PreThreadSingleton>(() => n 阅读全文
posted @ 2022-05-12 17:44 后跳 阅读(40) 评论(0) 推荐(0)
摘要:单例模式 LAZY<T>: interface IDatabase { int GetConnection(string name); } class FileDatabase : IDatabase { private Dictionary<string, int> dic = new Dicti 阅读全文
posted @ 2022-05-12 17:40 后跳 阅读(78) 评论(0) 推荐(0)
摘要:单例模式 MonoState public class Boss { private static string name; public string Name { get => name; set => name = value; } public override string ToStrin 阅读全文
posted @ 2022-05-12 17:35 后跳 阅读(22) 评论(0) 推荐(0)
摘要:单例模式:上下文语境 using System; using System.Collections.Generic; namespace DesignParttern_Singleton_Context { public class BuildContext:IDisposable { public 阅读全文
posted @ 2022-05-12 17:26 后跳 阅读(52) 评论(0) 推荐(0)
摘要:Dependence Inversion Principle 依赖倒置原则 Dependency Inversion:依赖倒置。即面向抽象/接口编程。可参考依赖倒置原则。面向抽象编程,可大大提高灵活度,因为抽象可继承实现,而所有实现均可替代抽象。 设计模式05-依赖倒置(依赖高层抽象,不应该依赖细节 阅读全文
posted @ 2022-05-11 11:07 后跳 阅读(48) 评论(0) 推荐(0)
摘要:Liskov Substitution Principle 里式替换原则 Liskov Substitution: 里氏替换。在任何基类类出现的地方,子类能直接替代基类,也就是说,基类有任何修改,都不会对子类功能产生影响。 以下例子:正方形是矩形吗? class Rectange { //publi 阅读全文
posted @ 2022-05-11 10:58 后跳 阅读(42) 评论(0) 推荐(0)
摘要:Interface Segregation: 接口隔离 单一职能和接口隔离感觉上十分相似,都使用了最小化原则。(接口保持最小单位,然后可以使用继承进行拓展) 以下例子是打印机功能,新的打印机可以有多个功能,单是老的打印只能打印,此时我们就应该把打印接口单独隔离 class Document { } 阅读全文
posted @ 2022-05-11 10:52 后跳 阅读(54) 评论(0) 推荐(0)
摘要:Open Closed Principle:开闭原则 OpenClosed: 开闭原则。对拓展开放,对修改关闭,增加新需求时可以轻松拓展而不用修改已有代码。 以下例子是对于属于的过滤(零件名称,零件颜色,零件尺寸分别过滤筛选) enum Color { Yellow,Red,Green } enum 阅读全文
posted @ 2022-05-11 10:46 后跳 阅读(34) 评论(0) 推荐(0)
摘要:Single Responsibility Principle:单一职责原则 Single: 单一功能,各个部分保持独立,避免一个程序负责大于等于两个以上的功能 public class Log { private readonly List<string> entries = new List<s 阅读全文
posted @ 2022-05-11 10:42 后跳 阅读(51) 评论(0) 推荐(0)
摘要:程序命名规范 名称易读、可搜索 可读指的是不要使用一些生僻字,难以发音的单词。 可搜索是便于利用 IED 的自动补全和搜索功能,能根据我们的命名规范快速定位想要找的类或者方法等。 可读 名称读不出来,在讨论的时候就好像是一个沙雕。 哎,那个「treeNewBeeAxibaKula」类是什么作用? 听 阅读全文
posted @ 2022-03-31 09:10 后跳 阅读(359) 评论(0) 推荐(0)