什么是设计模式?
设计模式是对面向对象设计中反复出现的问题的解决方案。
为什么要用设计模式?
使用设计模式是为了是代码更容易被他人理解、同时使代码的更加的可维护、可扩展、可复用。
设计模式的原则
- 开放 封闭原则 : 开发扩展 封闭修改
-
依赖倒置原则 :
- 高层模块不应该依赖低层模块,两个都应该依赖抽象
- 抽象不应该依赖细节。细节应该依赖抽象
-
里氏代换原则:
- 子类型必须能够替换掉它们的父类型
- 接口隔离原则
- 迪米特法则又称最少知道原则
- 合成复用原则
-
设计模式的类型:
-
创建型模式: 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
- 工厂模式
- 抽象工厂模式
- 单例模式
- 建造者模式
- 原型模式
-
结构型模式: 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 代理模式
-
行为型模式:
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 空对象模式
- 策略模式
- 模板模式
- 访问者模式
-
简单工厂
优点: 将创建产品对象封装起来,后期如果需要修改类名的时候,仅仅需要修改工厂类的类名就可以。
缺点: 违背了开放-封闭原则,当我们要新增一个OPPO手机的时候,需要修改工厂方法。
工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化哪一类。工厂方法使一个类的实例化延迟到其子类。
优点:
- 客户端使用对象,只需要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以了。
缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂。
抽象工厂模式: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂结构图:
抽象工厂优化结构图
策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
工厂方法模式 和 抽象工厂模式
区别
- 工厂方法模式是用一个
工厂类
来创建一个
对象。 - 抽象工厂模式是用一个
工厂类
来创建多个
对象。因为这些对象属于同一个产品线
有一个 手机工厂
, 可以用来生产手机。生产一部手机需要: 操作系统
, CPU
, 内存
等等:
如果要支持生产以前的 诺基亚功能机
和现在的 安卓智能手机
,那么他们所需的 操作系统
, CPU
, 内存
都是不同的。那就可以创建两个抽象工厂: 诺基亚Factory
和 安卓Factory
:
参考:
《大话设计模式》https://book.douban.com/subje...
设计模式 菜鸟教程: https://www.runoob.com/design...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。