组合模式
命令模式
class Cooker {
cook(){
console.log('做饭')
}
}
class Cleaner {
clean(){
console.log('洗碗')
}
}
class CookerCommand {
cooker: Cooker
constructor(){
this.cooker = new Cooker()
}
execute(){
this.cooker.cook()
}
}
class CleanerCommand {
cleaner: Cleaner
constructor(){
this.cleaner = new Cleaner()
}
execute(){
this.cleaner.clean()
}
}
class Customer {
command: any
setCommad(command: any){
this.command = command
}
}
let clean = new CleanerCommand
let cook = new CookerCommand
let cu = new Customer
cu.setCommad(clean)
cu.command.execute()
cu.setCommad(cook)
cu.command.execute()
享元模式
看图基本就可以明白
class Person {
constructor(name,age){
this.name = name, // 变量存在内部
this.age = age
}
getName(){
return this.name //方法存在原型对象上
}
}
let p1 = new Person('lliu','12')
console.log(p1.getName())
let p2 = new Person('lliu','12')
let p3 = new Person('lliu','12')
console.dir(Person)
console.log(Person.prototype === p1.__proto__)
模板方法
// class Person {
// constructor(private name:string,private age:string){
// this.name = name, // 变量存在内部
// this.age = age
// }
// getName(){
// return this.name //方法存在原型对象上
// }
// }
// let p1 = new Person('lliu','12')
// console.log(p1.getName())
// let p2 = new Person('lliu','12')
// let p3 = new Person('lliu','12')
// 模板方法
class Person {
drinner(){
this.buy()
this.cook()
this.eat()
}
eat() {
throw new Error("Method not implemented.")
}
buy() {
throw new Error("Method not implemented.")
}
cook() {
throw new Error("Method not implemented.")
}
}
class Anderson extends Person {
buy() {
console.log('买菜')
}
cook() {
console.log('做饭')
}
eat() {
console.log('吃饭')
}
}
new Anderson().drinner()