设计模式随笔1-10;IOC;DI

  本文章不详细讲述设计模式的uml图及相关抽象和实现;

  设计模式详细讲述 http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html

  Iterator :迭代模式,一个一个遍历;遍历过程中不用实现遍历对象,不改变对象属性。

  Adapter:适配器模式,加个“适配器"以便于复用;在某个实现类的结果基础上增加额外计算过程用来适用于不同场景。

  Template Method :模板方法模式,将具体实现交给子类;模板类中定义抽象方法,包含实现最终想要得到结果的全部步骤,子类负责实现模板方法。

  Factory Method :工厂模式,将实例的生成交给子类;包含抽象工厂及抽象产品,抽象工厂包含抽象产品的实现,由子类实现具体产品,抽象产品定义产品属性,子类定义具体属性,所有产品实现过程均在具体工厂中。

  Singleton:单例模式,只有一个实例;一个类中的静态成员只会被实例化一次,因静态成员在加载类的过程中完成静态变量的内存分配,故保存一次,但后来由于多线程出现,所以后来实现过程由锁的不同分为两种。

  Prototype:原型模式,通过复制生成实例;必须继承Cloneable接口,包含一个产品接口,子类实现产品并实现Clonable接口,交由管理者管理,通过管理者类clone子类。

  Builder:建造者模式,组装复杂的实例;建造者抽象了产品的实现方法,交由使用者类使用,实现过程在子类中,具体实现过程使用者不关心也不必知道,他只关心建造者提供的方法。

  Abstract Factory:抽象工厂模式,将关联零件组装成产品;抽象工厂是对工厂的抽象,抽象工厂中包括了抽象产品,产品子类实现抽象产品,工厂子类实现抽象工厂,通过不同的工厂实现不同的产品;

  Bridge:桥梁模式,将类的功能层次结构与实现层次结构分离;抽象类定义实现过程,“委托”给展示类,展示类不实现,具体实现过程交由子类。

  Strategy:策略模式,整体替换算法;Strategy接口定义策略类抽象方法的接口,不同子类实现不同作用的策略,由策略使用者使用。

  IOC:控制反转,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度;

  DI :依赖注入,所谓的依赖注入,甲方开放接口,在它需要的时候,能够讲乙方传递进来(注入)

众多抽象模式中,抽象扮演着中间件的作用,它弱化了类与类之间的关联。

  高内聚低耦合可以说是软件技术形态的终极目标。用学术界的话来说,软件的两个本质特性就是构造性和演化性,高内聚低耦合的设计能够让构造和演化都更加高效,比如:

  • 开发更方便组织分工
  • 代码更容易进行复用
  • 更容易进行测试
  • 软件演化有更好的灵活性,能快速响应需求变化,维护代价更小

  软件设计各种技术的出现,无一不是朝着这个终极目标的努力。面向对象、基于组件(学术界称为构件)的软件开发、面向切面编程(AOP)、Java近些年流行的模块化方法(比如OSGi技术)等等,这些方法和技术的出现,无外乎都是为了让软件更加高内聚低耦合。与此同时,各路大神还提出各种软件设计原则和模式,来规范我们的软件形态 链接:https://www.zhihu.com/question/23277575/answer/121015545

注:人之所恶在好为人师,不实知,谨慎言


posted @ 2017-09-01 15:16  ZZMyDesign  阅读(93)  评论(0)    收藏  举报