接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类D,如果接口Interface1对于类A和类C来说不是最小接口,那么类B和类D必须去实现他们不需要实现的方法 按照接口隔离原则,将接口Interface1拆分成若干个独立的接口(如图可得拆分成3个),类A和类C分别与他们需要的接口建立依赖关系 应用实例 没有使用接口隔离原则 public class…
单一职责原则注意事项和细节 1.降低类的复杂度,一个类只负责一项职责 2.提高可读性,可维护性 3.降低变更引起的风险 4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则,只有类方法数量足够少,才可以在方法级别保持单一职责原则 初学者写法 public class SingleResponsibility01 { public static void main(String[] args) { Vehicle vehicle =new Vehicle();…
设计模式的目的 编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战.设计模式为了让程序具有更好的 1.代码重用性(即:相同功能的代码,不用多次编写) 2.可读性(即:编程规范性,方便程序员读懂代码) 3.可扩展性(即:当需要增加新的功能时,非常方便,称为可维护) 4.可靠性(即:当我们增加新功能后,对原功能没有影响) 5.使程序员呈现搞内聚,低耦合的特性 设计模式的七大原则 1.单一职责原则 2.接口隔离原则 3.依赖倒转原则 4.里氏替换原则…
前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue)都是基于这个模式的思想来实现的,生产者产生数据放到一个队列中,消费者观察生产者的消息队列的变化,从而接收消息,执行消费者本身的逻辑. 观察者模式 概念介绍 观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象.这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 使用单例模式的原因 以Windows任务管理器为例,在Windows系统中,任务管理器是唯一的,多次打开任务管理器,始终只能弹出一个唯一的任务管理器. 这么做的理由有两个: 节约资源 避免多个实例数据不一致问题 1.1 节约资源 如果能弹出多个窗口,且这些窗口的内容完全一致,全部是重复对象,这势必会浪费系统资源,任务管理器需要获取系统运行时的诸多信息,这些信息的获取需要消耗一定的系统资源…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为频繁,通常做为学习其他工厂模式的入门. 接下来我们从一个虚构的业务场景遇到的问题开始,到如何使用简单工厂模式去解决这个业务场景的问题的角度,来介绍这个模式. 2. 具体业务 有一个图表类,可以在实例化的时候根据传入的参数创建不同的图表类型,比如柱状图.饼状图.折线图等等. 2.1 业务代码 /**…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,这将违背"开闭原则". 本篇将要介绍的工厂方法模式可以规避这个缺点. 2. 工厂方法模式 工厂方法模式又简称为工厂模式,又可称作虚拟构造器模式或多态工厂模式.工厂方法模式是一种创建型模式. 2.1…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题, 但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销. 此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产.这就是抽象工厂模式的基本思想. 2. 模拟业务 开发一套界面皮肤库,用户在使用时可以通过菜单来选择皮肤…
前言 大约在一年前学习过一段时间的设计模式,但是当时自己的学习方式比较低效,也没有深刻的去理解.运用所学的知识. 所以现在准备系统的再重新学习一遍,写一个关于设计模式的系列博客. 废话不多说,正文开始. 1. 设计模式是什么 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性. 2. 学习设计模式的好处 提高开发效率,使用设计模式可以避免我们做一些重复工作 减少开发人员的沟通成本. 阅读源码,更深入的…
观察者模式说起来很简单,就是一个订报纸的模式.但是实际上这部分我觉得还是很有意思的,<Head First设计模式>里还有一些还没看完,也是因为理解的不够深吧. 观察者模式会包含两个组件:观察者和主题. 这段代码是主题的接口: package obeserver; public interface Subject { public void registerObserver(Observer observer); public void removeObserver(Observer obse…