常用的设计模式 (一:工厂模式)

常用的设计模式 (一)

一、 常用的设计模式

1、 我们通常说的 23 中经典设计模式可以通过下表一目了然:

分类 设计模式
创建型 工厂方法模式( Factory Method) 、 抽象工厂模式( Abstract Factory) 、建造者模式( Builder) 、 原型模式( Prototype) 、 单例模式(Singleton)
结构型 适配器模式(Adapter)、 桥接模式( Bridge) 、 组合模式( Composite) 、装饰器模式( Decorator) 、 门面模式( Facade) 、 享元模式( Flyweight) 、代理模式( Proxy)
行为型 解释器模式( Interpreter) 、 模板方法模式( Template Method) 、责任链模式( Chain of Responsibility) 、 命令模式( Command) 、迭代器模式( Iterator) 、 调解者模式( Mediator) 、 备忘录模式( Memento) 、观察者模式( Observer) 、 状态模式( State) 、 策略模式( Strategy) 、访问者模式( Visitor)

注:通常来说, 设计模式都是混合使用, 不会独立应用。 利用穷举法充分理解设计模式的应用场景。 在平时
的应用中, 不是用设计模式去生搬硬套, 而是根据具体业务问题需要时借鉴。

2、 设计模式在应用中遵循六大原则:

  1. 开闭原则( Open Close Principle)
    Software entities like classes,modules and functions should be open for extension but closed for
    modifications.( 一个软件实体如类、 模块和函数应该对扩展开放, 对修改关闭。 )在程序需要进行拓展的时候, 不能去修改原有的代码, 实现一个热插拔的效果。 所以一句话概括就是: 为了使程序的扩展性好, 易于维护和升级。 想要达到这样的效果, 我们需要使用接口和抽象类.
  2. 里氏代换原则( Liskov Substitution Principle)
    里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 只要父类能出现的地方子类就可以出现, 而且替换为子类也不会产生任何错误或异常, 使用者可能根本就不需要知道是父类还是子类。 但是, 反过来就不行了, 有子类出现的地方, 父类未必就能适应。 LSP 是继承复用的基石, 只有当衍生类可以替换掉基类, 软件单位的功能不受到影响时, 基类才能真正被复用, 而衍生类也能够在基类的基础上增加新的行为。 里氏代换原则是对“开-闭” 原则的补充。 实现“ 开-闭” 原则的关键步骤就是抽象化。 而基类与子类的继承关系就是抽象化的具体实现, 所以里氏代换原则是对实现抽象化的具体步骤的规范。
  3. 依赖倒转原则( Dependence Inversion Principle)
    这个是开闭原则的基础, 具体内容: 针对接口编程, 依赖于抽象而不依赖于具体。
    依赖倒置原则在Java语言中的表现就是:
    ● 模块间的依赖通过抽象发生, 实现类之间不发生直接的依赖关系, 其依赖关系是通过接口或抽象类产生的;
    ● 接口或抽象类不依赖于实现类;
    ● 实现类依赖接口或抽象类。
    更加精简的定义就是“面向接口编程”——OOD( Object-Oriented Design, 面向对象设计) 的精髓之一。
  4. 接口隔离原则( Interface Segregation Principle)
    这个原则的意思是:建立单一接口, 不要建立臃肿庞大的接口。 再通俗一点讲: 接口尽量细化, 同时接口中的方法尽量少。 还是一个降低类之间的耦合度的意思,从这儿我们看出, 其实设计模式就是一个软件的设计思想, 从大型软件架构出发, 为了升级和维护方便。
  5. 迪米特法则( 最少知道原则) ( Demeter Principle)
    一个实体应当尽量少的与其他实体之间发生相互作用, 使得系统功能模块相对独立。
  6. 单一职责原则(Single Responsibility Principle)
    单一职责原则要求一个接口或类只有一个原因引起变化, 也就是一个接口或类只有一个职责, 它就负责一件事情

注:设计原则因项目而异,因环境而异,不能生搬硬套.

设计模式之间的关系图

常用的设计模式 (一:工厂模式)_第1张图片

工厂模式

1.简单工厂模式(Factory)

应用场景:又叫做静态工厂方法(StaticFactory Method)模式,但不属于23 种设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。Spring 中的BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean 对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。
代码:

你可能感兴趣的:(设计模式)