1.数据结构(算法)*
数据结构 就是存储数据的结构(容器)
1.1 数组
1.2 链表(单链表和双向链表)
1.3 队列 (先进先出)
1.4 栈 (先进后出)
1.5 图
1.6 树
....
算法
递归算法 查找算法(bfs 广度优先 dfs 深度优先)
贪心算法
马拉车算法
狄克斯特拉算法
排序算法
.....
2.操作系统(Linux)
3.计算机组成原理
4.网络通信原理
设计模式
工厂模式
function PersonFactory(name){
let obj = new Object() //生成一个对象
obj.name = name
return obj
}
let person = PersonFactory('jack')
单例模式
function PersonFactory(name){
let obj = new Object() //生成一个对象
obj.name = name
return obj
}
let person = PersonFactory('jack')
实现
1.用一个变量来判断是否存在这个对象
2.如果不存在 创建 这个变量要重新赋值
3.如果存在 直接返回这个变量
闭包实现单例
function Person(){
}
//利用闭包来实现单例
function CreatePerson(){
let instance
return function(){
if(!instance){
instance = new Person()
}
return instance
}
}
let created = CreatePerson()
let person = created() //产生一个新的对象
let person1 = created() //产生一个新的对象
console.log(person === person1) //true
原型实现单例
function Person(){
}
//用原型来实现单例
function CreatedPerson(){
if(!Person.instance){
Person.instance = new Person()
}
return Person.instance
}
let person2 = CreatedPerson()
let person3 = CreatedPerson()
console.log(person2 === person3);
组合模式
组合模式 将几个共有的方法一起调用
class getHome{
constructor(){
}
init(){
console.log("到家了");
}
}
class openComputer{
constructor(){
}
init(){
console.log("打开电脑");
}
}
class playGame{
constructor(){
}
init(){
console.log("玩游戏");
}
}
//原来的调用方式
new getHome().init()
new openComputer().init()
new playGame().init()
//组合模式 让这个几个init方法 放在一起调用
//传对象
class Combination{
constructor(){
this.args = []
}
//写个方法来传
add(obj){
this.args.push(obj)
}
//写个执行的方法
execute(fnName){
this.args.forEach((obj)=>{
obj[fnName]()
})
}
}
//组合模式的调用
let combin = new Combination()
combin.add(new getHome())
combin.add(new openComputer())
combin.add(new playGame())
combin.execute('init')