对于一个还未完全撑握设计模式的我,我的办法是遇到问题时,先简单按照自己的想法实现,然后再拿设计模式对比,改进。这样在遇到问题寻找解决办法的过程中就会加深解决问题后的愉悦感,你以后都不会忘记这个问题是如何解决的了。正所谓 痛的越狠,记的越深!
面向对象设计基础原则:
1、单一职责 原则(SRP: Single Responsibility Principle);
2、开-闭 原则(OCP: Open - Close Principle)
封装共同点,剥离变化点;就实现了开放/封闭原则。
3、里氏替换 原则(LSP: Liskov Subsitution Principle)
4、依赖倒置 原则(DIP: Dependence Inversion Principle)
5、接口隔离 原则(ISP: Interface Segregation Principle)
模式名称 | 简介 | 适用场景 | jdk 中 | 备注 |
工厂模式 | 解决创建类对象的时机问题 | |||
单例 | System 、Runtime、ThreadLocal 这些类为全局提供唯一的对象 | |||
装饰模式 | 游戏开发中,某角色所具备的能力,随着级别的升高,技能也随着增加。 | i/o 流 | ||
外观模式(facade) | 意图是:为了给子系统中的一组接口提供一个一致的界面;其定义了一个高层接口,方便子系统各模块的使用 | 如:客服系统,用户想要咨询的服务,有可能分步在不同的子系统中,这时你不能要求用户打进来的电话一会转这边一会转那边。提供一个统一的界面给用户,这样更方便和合理。 | 集合类Collections | 为复杂子系统提供一个简单的接口 |
模板方法模式 | 把不变的行为转移到超类中,以去除子类中重复的代码 | java ee HttpServlet类中的service 方法,就是个模板方法 | 这是抽象类的一种典型的应用,区别与接口的应用;抽象类着重代码实现的重用性,接口重点在系统设计时定义行为(契约) | |
mvc 为什么不是设计模式:简单的说就是,mvc是三种设计模式的演进,mvc 是一种架构方式!