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();
如对本文有疑问, 点击进行留言回复!!
荐 微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示
深入理解CSS background-blend-mode的作用机制
网友评论