摘要:
一、定义第一篇简单工厂方法讲到,后续添加服务的时候会直接修改工厂类,因为他控制了实例化哪个类。工厂方法,就让实例化推迟到了子类。怎样推迟?在子类中实例化呗。二、实例之前的服务不变,将简单的工厂的工厂类拆分成,每个case对应一个具体的工厂,这样也就只创建一个服务类。这里的两个工厂BLFactory和... 阅读全文
摘要:
一、定义定义无需赘述,根据参数判断实例化哪个对象。替换让人眼花缭乱的if语句。二、实例代码定义接口:public interface IService{}BL和WCF继承并实现:public class BL:IService { public BL() { ... 阅读全文
摘要:
一、策略模式 策略模式:封装易变化的算法,可互相替换。 GoF《设计模式》中说道:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。该模式使得算法可独立于它们的客户变化。 比如:一个推送服务类,推送的方式,可以分为:QQ推送、邮箱推送、App推送、PC插件推送。 这里讲两个点: 1、推送 阅读全文
摘要:
1、功能角色工厂,创建角色(医生、兽人),每个角色有技能包(攻击、防御)2、实现抽象攻击技能 public abstract class AttactSkill { }抽象防御技能 public abstract class DefenseSkill { ... 阅读全文
摘要:
一、功能根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务 ,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式。二、实现修改前:简单工厂 public static class PushServiceFactory { public static IPush Cr... 阅读全文
摘要:
一、功能: 实现 获取数据 —>根据用户订阅清单进行推送 —> 这里的推送方式:QQ、Email、App、插件等等 用户可多选推送方式。二、实现1、推送方式—枚举(位运算):[Flags] public enum PushType { QQ = 0, ... 阅读全文
摘要:
charles使用教程指南 前言 移动APP抓包 PC端抓包 查看模式 其他功能 问题汇总 一、 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的抓包工具。 阅读全文
摘要:
目录:建议13:为类型输出格式化字符串建议14:正确实现浅拷贝和深拷贝建议15:使用dynamic来简化反射实现一、建议13:为类型输出格式化字符串有些类型需要我们根据业务需求提供字符串的格式化输出。1、我们明确知道业务需求什么样的输出格式,也就是类型主动格式化输出。可以重写Object.ToStr... 阅读全文
摘要:
目录:建议10:创建对象时需要考虑是否实现比较器建议11:区别对待==与Equals建议12:重写Equals时也要重写GetHashCode一、建议10:创建对象时需要考虑是否实现比较器比较一下基本工资: class Salary : IComparable { public ... 阅读全文
摘要:
目录:建议7:将0值作为枚举的默认值建议8:避免给枚举类型的元素提供显示的值建议9:习惯运算符重载一、建议7:将0值作为枚举的默认值允许使用的枚举类型有:byte、sbyte、short、ushort、int、uint、long、ulong。不指定值,默认从0开始计数,后面的元素依次+1。enum ... 阅读全文
摘要:
目录:建议4:TryParse比Parse好建议5:使用int?确保值类型也可以为null建议6:区别 readonly 和 const 的用法一、建议4:TryParse比Parse 好TryParse:发生转换异常,内部处理异常。返回false并且result=0public static bo... 阅读全文
摘要:
目录:建议一:正确操作字符串建议二:使用默认转型方法建议三:区别对待强制转型和as建议一、正确操作字符串1、确保尽量少的装箱static void Main(string[] args) { int indexNo = 1; int dbNo... 阅读全文
摘要:
目录 线程的几种状态 基础线程 前台线程、后台线程 一、线程的几种状态 我们所说的基础线程就是通过Thread类显示创建的线程。可以大体了解一下Thread类相关的成员: 属性: 方法: 线程的5个状态: 1、创建状态(new): 对应 Thread th= new Thread(worker) 时 阅读全文