随笔分类 - 设计模式
摘要:意图:运用共享技术有效地支持大量细粒度的对象。 主要解决:在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。 何时使用: 1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、这
阅读全文
摘要:和平时开发中是用的webpack 代码请求解决跨域问题类似 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在
阅读全文
摘要:观察者模式: var subject = { observers: [], notify() { this.observers.forEach(observer =>{ observer.update() }) }, attach (observer) { this.observers.push(o
阅读全文
摘要:概念: 装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。 其实,就是创建一个包装器,里面有增强的功能,然后把目标对象给套住,就直接使用包装器对象。 UML: es6: class
阅读全文
摘要:工厂方法模式,通过对产品类的抽象使其创建业务,主要负责创建多类产品的实例。前面记录了简单工厂模式,但是需求时不断变化的,当需求简单时,直接创建对象就行,需求多了就可以用简单工厂重构,但是当需求不断增加时,我们不仅要添加类,还要修改工厂函数,这样很不友好,所有还需要更好的模式来适应更多的需求。 安全模
阅读全文
摘要:举例: $('div') React.createElement 结构: 简单工厂模式包含如下角色: Factory:工厂角色工厂角色负责实现创建所有实例的内部逻辑 Product:抽象产品角色抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口 ConcreteProduct:具
阅读全文
摘要:设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中
阅读全文
摘要:Adapter Pattern 意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。
阅读全文
摘要:概念解读 外观模式(facade): 为子系统中的一组接口提供一个一致的表现,使得子系统更容易使用而不需要关注内部复杂而繁琐的细节.比如下图就是一个很好形象的说明外观模式的设计思路 作用 对接口和调用者进行了一定的解耦 创造经典的三层结构MVC 在开发阶段减少不同子系统之间的依赖和耦合,方便各个子系
阅读全文
摘要:主要解决: 在有多种算法相似的情况下,使用 if...else 或 switch...case 所带来的复杂性和臃肿性 优点 算法多样性,且具备自由切换功能; 有效避免多重条件判断,增强了封装性,简化了操作,降低出错概率; 扩展性良好,策略类遵顼 里氏替换原则,可以很方便地进行策略扩展; 缺点 策略
阅读全文

浙公网安备 33010602011771号