摘要:享元模式的理解: 享元模式的定义:运用共享技术支持大量细粒度对象的复用; Flyweight Pattern Definition:Use sharing to support large numbers of fine-grained efficiently. 享元模式关键词:大量、细粒度、复用、
阅读全文
摘要:原型模式不是通过new生成新的对象,而使通过复制进行生成; 原型模式适用于相同类型的多个对象的生成; 原型模式分为两种:浅克隆/浅表副本(Shallow Clone)和深克隆/深表副本(Deep Clone); 浅克隆:Shallow Clone,只复制值类型变量,不复制引用类型变量的克隆;(只复制
阅读全文
摘要:建造者模式相较于工厂模式,用于创建复杂的对象; 使用的技术:继承、抽象类、多态、配置文件、反射; 建造者模式的设计原则: 面向抽象类编程,符合依赖倒置原则; 通过配置文件生成具体建造者,替代抽象建造者,符合里氏替换原则; 不同的建造者建造不同的角色,符合单一职责原则; 客户端只需调用建造者生成角色对
阅读全文
摘要:工厂模式对比: 简单工厂 SimpleFactoryPattern 工厂方法 FactoryMethodPattern 抽象工厂 AbstractFactoryPattern 工厂数量 一个工厂 多个工厂 多个工厂 工厂数量计算 1 工厂数=产品数 工厂数=产品系列数 单个工厂创建产品数 所有产品
阅读全文
摘要:相比于工厂模式,抽象工厂模式的每个工厂可以创建产品系列,而不是一个产品; 抽象工厂用到的技术:接口、多态、配置文件、反射; 抽象工厂模式的设计原则: 实现客户端创建产品和使用产品的分离,客户端无须了解创建的细节,符合迪米特法则; 客户端面向接口定义产品,符合依赖倒置原则; 客户端面向接口定义工厂,而
阅读全文
摘要:本例用到了配置文件、接口、反射、多态; 满足的设计原则: 通过工厂,实现创建对象和使用对象的分离,实现松耦合,满足迪米特法则; 通过配置文件指定创建对象类型,而不需更改源代码,满足开闭原则; 容易实现功能扩展,只需添加新的Logger实现类和新的Factory实现类即可,无须更改源代码,满足开闭原则
阅读全文
摘要:<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="chartType" value="histogram" /> </appSettings> </configuration> public
阅读全文
摘要:internal interface Chart { void Display(); } internal class LineChart : Chart { public LineChart() { Console.WriteLine("创建折线图"); } public void Display
阅读全文
摘要:策略模式通用UML类图 with StarUML 具体实现的UML类图 with StarUML 折扣接口 namespace StrategyPattern { interface Discount { double Calculate(double price); } } 学生折扣类 names
阅读全文
摘要:在GoF经典著作《设计模式:可复用面向对象软件的基础》中一共描述了23种设计模式。 《Design Patterns:Elements of Reusable Object-Oriented Software》,由 Erich Gamma、Richard Helm、Ralph Johnson 和 J
阅读全文
摘要:软件的可维护性(Maintainability)和可复用性(Reusability)是衡量软件质量的两个重要属性; 可维护性:软件能够被理解、改正、适应、扩展的难易程度; 可复用性:软件能够被重复使用的难易程度; 面向对象设计的目标在于支持可维护性复用,一方面需要实现设计方案或者源代码的复用,另一方
阅读全文
摘要:/// <summary> /// string扩展方法,可以用字符串变量加.的形式直接调用,this是关键 /// </summary> public static class StringExtention { private static Regex regex = new Regex("\\
阅读全文
摘要:public enum ProtoType { Move = 1, Enter = 2, Leave = 3, Attack, Die, } print("ProtoType.Move:" + ProtoType.Move); print("ProtoType.Move.ToString():" +
阅读全文
摘要:using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 普通单例基类 /// by:zdz /// date:20220328 /// </summary> //
阅读全文
摘要:using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threadi
阅读全文
摘要:多点触控的方法,两边的触控互不干扰; 主要采用Input.touches的相关属性进行操作; 而采用IPointerDrag接口会造成两个drag的相互干扰; 代码如下: using System.Collections; using System.Collections.Generic; usin
阅读全文
摘要:如何跨线程访问Winform中的UI元素 假如制作一个Socket聊天应用程序,很可能会用到多线程; 例如为Receive方法开辟单独一个线程,例如为Receive方法开辟单独一个线程(后台运行的线程IsBackGround=true); 然而Winform的UI控件都是运行在主线程中的,如果从其他
阅读全文
摘要:单播委托:一个委托只指向一个方法; 多播委托:一个委托指向多个方法,形成一个方法链; Main是静态方法,里面只能引用静态方法,而不能引用实例方法; Main可以进行类的实例化,然后引用实例化后的方法; 委托的使用流程:声明委托,实例化委托,绑定事件,调用委托(也就是调用委托绑定的方法); 声明委托
阅读全文