用到的地方
1.代码中switch-case,if-else if这些比较多,并且可能扩展的
2.需要安全地封装多种同一类型的操作时
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。
例子:
interface Cell {
type: string;
value: any;
}
interface Render {
render(cell: Cell): void;
}
class DateRender implements Render{
public render(cell: Cell) {
}
}
class ImageRender implements Render {
public render(cell: Cell) {
}
}
class SelectRender implements Render {
public render(cell: Cell) {
}
}
class defaultRender implements Render {
public render(cell: Cell) {
}
}
class Excel {
protected cells: Cell[];
constructor() {
this.cells = [];
}
public init() {
for(let cell of this.cells) {
let cellRender: Render = null;
if(cell.type == 'date') {
cellRender = new DateRender();
}else if(cell.type == 'image') {
cellRender = new ImageRender();
}else if(cell.type == 'select') {
cellRender = new SelectRender();
}else{
cellRender = new defaultRender
}
cellRender.render(cell);
}
}
}
function showExcell() {
let excell = new Excel();
excell.init();
}
showExcell();