访问修饰符
public:公开的,公共的
private:私有的,只能在当前类的内部访问
protected:受保护的,只能在当前类的内部已经该类的子类中访问
internal:只能在当前项目中访问
protected internal:等于protected + internal
在同一个项目中,internal的权限比protected要高,但是如果出了项目因为protected修饰的成员可以被子类继承,所以从这方面看protected的权限反而要高些
序列化与反序列化
序列化:将对象转换成二进制
反序列化:将二进制转换为对象
作用:传输数据
应为网络传输的时候是使用高低电位来传输的0和1,所以一切的数据在网络中传输的时候都要进行序列化为二进制
序列化:
要将需要进行序列化的类标记为可以进行序列化操作
一个类一旦被标记成可以序列化,则该类不能被继承
例如有一个类Person,有两个属性,Name和Age
然后把这个类实例化之后的对象序列化为二进制并存入文件1.txt
之后从1.txt文件里面读取二进制,并反序列化为Person的对象
Person p = new Person();
p.Name = "张三";
p.Age = 18;
服务器端,把对象转换成二进制
//FileStream fsWrite = new FileStream(@"C:\Users\Administrator\Desktop\test\1.txt", FileMode.OpenOrCreate, FileAccess.Write);
序列化的对象,可以将对象p序列化为二进制
//BinaryFormatter bf = new BinaryFormatter();
把对象p序列化为二进制,并写入到文件1.txt中
//bf.Serialize(fsWrite, p);
//fsWrite.Close();
//fsWrite.Dispose();
//服务器端读取二进制
FileStream fsRead = new FileStream(@"C:\Users\Administrator\Desktop\test\1.txt", FileMode.OpenOrCreate, FileAccess.Read);
//反序列化的对象
BinaryFormatter bf = new BinaryFormatter();
//反序列化并强转为Person对象中
Person per = (Person)bf.Deserialize(fsRead);
简单工厂模式
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例
主要角色和职责为:
工厂类:简单工厂模式的核心,负责创建所有实例的内部逻辑,工厂类中创建产品类的方法可以被外界直接访问,创建所需的产品对象
抽象产品类:简单工厂模式所创建的所有产品对象的父类
具体产品类:是简单工厂类创建的具体的产品对象,全部继承自抽象产品类
优点:工厂类包括了相关的逻辑判断,根据外界传入的参数,来具体的创建和返回不同的具体产品的对象,通过使用工厂类,可以让外界摆脱直接创建具体产品对象的的局面,仅仅需要消费对象,而不用关心工厂类里面具体产品对象是如何创建和组织的,明确了各自的权利和职责
缺点:由于吧所有创建具体产品对象的路基全部集中到了工厂类中,所以所有的具体产品的对象都是已知的,如果需要添加新的具体产品类,就要修改工厂类.当具体产品类的数量不断增多的时候,对系统的维护和扩展,以及在创建具体产品类对象的时候的判断复杂程度会增加