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