数据结构就是数据之间的关系
**线性表:
1.顺序表 --> List 方便查找、遍历、追加
2.链表 --> 方便插入和删除
3.栈 --> stack FILO 先进后出
4.队列 --> Queue FIFO 先进先出
5.字典 --> Dictionary<> 键值对组合 键是唯一的
栈 : 受限制的线性表
Pop : 出栈
Peek : 返回栈顶元素
Push : 压栈
队列 : 受限制的线性表
EnQueue : 入队
DeQueue : 出队
Peek : 返回队首元素
字典 --> Key : Value
字典是无序的 不存在插入和索引
Dictionary<string,string> myDictionary = new Dictionary<string,string>();
myDictionary.Add(Key,Value); //添加进字典
myDictionary.Remove(Key); //删除对应的Key键 若为false 则无该Key键
myDictionary[Key] = x; //修改key对应的value值
遍历字典必须用foreach
PlayerPrefs --> 变相的字典**
设计模式
设计原则:高内聚,低耦合
单一原则 : 累的职责单一,对外只提供一种功能
开闭原则 : 累的改动是通过增加代码,而不是修改源代码
里式替换原则 : 任何抽象类出现的地方都可以用其子类代替
依赖倒转原则 : 以来抽象(接口),不依赖具体显示类
迪米特原则 : 多组合,少继承
合成复用原则 : 多组合
- 单例模式: 懒汉和饿汉(直接就new 线程相对安全) 但是在unity不涉及多线程, 所以都行 一般人们写的懒汉多一点
1. 普通class
2. 里面一个私有的 静态属性 对象
3. 私有构造函数
4. 共有 静态 对象返回值类型的 方法(GetInstance/GetInit)
5. GetInstance 进行new - 简单工厂:
1. 抽象父类
2. 子类继承并重写父类
3. 工厂接受参数 并new对应的子类 返回类型是抽象父类
4. 工厂方法里面就是switch结构
6. 违背了开闭原则 - 工厂方法:
1. 定义抽象工厂(返回值是抽象父类)和抽象父类
2. 一个物体就佩戴一个工厂 - 中介者模式
1. MVC 卖家 买家 淘宝
简单工厂方法
以生产手机为例
定义一个抽象类抽象方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂模式
{
public abstract class GetPhotoName//抽象类
{
public string PhotoName;
public abstract void show();//抽象方法
}
}
定义工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂模式
{
public class FSK
{
//静态方法,返回类型GetPhotoName
public static GetPhotoName CreatPhoneByName(string PhoneName)
{
GetPhotoName retunValue;
switch (PhoneName)//判断
{
case "mi":
retunValue = new Apple();//调用子类
retunValue.PhotoName = "MIMIX3";//调用父类属性并赋值
return retunValue;
case "apple":
retunValue = new MiMix3();
retunValue.PhotoName = "AppleXS";
return retunValue;
}
return null;
}
}
}
定义实现类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂模式
{
class Apple:GetPhotoName//实现类
{
public override void show()
{
Console.WriteLine("我是图片{0}",PhotoName);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂模式
{
class MiMix3:GetPhotoName//继承自抽象类
{
public override void show()//实现类
{
Console.WriteLine("我是图片{0}",PhotoName);
}
}
}
定义主类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 简单工厂模式
{
class Program
{
static void Main(string[] args)
{
//实例化creatPhone=FSK.CreatPhoneByName方法的返回值.
GetPhotoName creatPhone = FSK.CreatPhoneByName("apple");
creatPhone.show();//调用show方法
Console.ReadLine();
}
}
}
工厂方法
工厂方法是一个物品对应一个工厂! 实现自给自足
namespace 工厂方法
{
public abstract class AbsFac//定义抽象工厂
{
public abstract AbsPhone CreatePhone();//抽象方法
}
}
namespace 工厂方法
{
public abstract class AbsPhone//定义抽象手机类
{
public abstract void Show();//抽象方法
}
}
namespace 工厂方法
{
public class HuaWeiFac: AbsFac//实现类,继承自抽象工厂
{
public override AbsPhone CreatePhone()
{
return new HuaWei();
}
}
}
namespace 工厂方法
{
public class HuaWei: AbsPhone
{
public override void Show()
{
Console.WriteLine("我是华为手机");
}
}
}
namespace 工厂方法
{
class Program
{
static void Main(string[] args)
{
AbsFac HUAWEI = new HuaWeiFac();
AbsPhone huawei = HUAWEI.CreatePhone();
huawei.show();
Console.ReadLine();
}
}
}