• 六大原则
  • 23种设计模式:
  • 总体来说设计模式分为三大类:

*创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

*结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

*行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

1.单一职责原则(SRP)————【面向接口编程时】

应该有且仅有一原因引起类的变更;(低耦合),面向接口编程时,一个职责一个接口,分工单纯明确。也可以对于接口、方法时用。

2.里氏替换原则————【面型对象 继承时】

 所有引用基类的地方必须能透明地使用其子类的对象;
(只要父类能出现的地方子类就可以出现,而且可以替换子类也不会产生任何错误或异常,但是反过来不行,有子类出现的地方,父类未必能适应。)
尽量避免子类“个性”和父类关系之间难调和;例子:手枪、步枪、机枪的实现类。

4中含义:

1.子类必须完全实现父类方法;2.子类可以有自己的个性;3.覆盖或实现父类的方法时输入参数可以放大(“契约优先设计”,前置条件就是你要让我执行,就必须满足我的条件;后置条件就是我执行完了需要反馈标准是什么。)4.覆盖或实现父类的方法时输出结果可以缩小;

继承的优点如下:
* 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;
* 提高代码的重用性;
* 子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,
“世界上没有两片完全相同的叶子”是指明子与父的不同;
* 提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的;
* 提高产品或项目的开放性。 继承的缺点如下:
* 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;
* 降低代码的灵活性。子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;
* 增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,
这种修改可能带来非常糟糕的结果——大段的代码需要重构。 Java使用extends关键字来实现继承,它采用了单一继承的规则,C++则采用了多重继承的规则,一个子类可以继承多个父类。

3.依赖倒置原则————【面向接口编程时】

高层模块不应该依赖底层模块、两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
【每个逻辑的实例都是由原子逻辑组成,不可分割的原子逻辑就是底层模块,原子逻辑的再组装就是高层模块】
【Java中抽象就是指接口或抽象类,两者都不能直接被实例化的;
细节就是实现类,实现接口或继承抽象类而产生的类就是细节,可以直接被实例化,也就是可以加上关键字New产生一个对象】 模块间的依赖通过抽象来发生,实例类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类产生的;
接口或抽象类不依赖于实现类;实现类依赖接口或者抽象。【Java语言中】

依赖可以传递的,a-b-c... 只要做到抽象依赖,即使是多层的依赖传递也无所畏惧。

对象的依赖关系有三种方式来传递:

1.构造函数传递依赖对象;

2.Setter方法传递依赖对象;

3.接口声明依赖对象;

并行开发的最大的危险就是分险扩散:一段程序异常,波及到一个功能,一个模块,甚至毁掉整个项目。

4.接口隔离原则————【】

Page63

参考:

*Java开发中的23种设计模式详解

纯属个人观点,仅供参考!

Java开发23种设计模式之禅的更多相关文章

  1. Java 开发23种设计模式

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  2. Java开发23种设计模式

    设计模式(Design Patterns) -- --  -- 可复用面向对象软件的基础 设计模式(Design Patterns)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. ...

  3. Java实现23种设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  4. Java的23种设计模式(转)

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  5. Java的23种设计模式<一>

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  6. java的23种设计模式之建造者模式

    场景和本质 场景 本质 案例 原理 应用场景 场景和本质 场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理:装配这些子组件是不是有个步骤问题? ...

  7. 从追MM谈Java的23种设计模式(转)

    从追MM谈Java的23种设计模式    这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...

  8. JAVA:23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  9. 从追MM谈Java的23种设计模式

    从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...

随机推荐

  1. fedora 使用 vnc 远程 fedora 28 主机

    问题重述: 最近环境中需要使用 fedora 28 来进行远程桌面,于是就重新配置了一下vnc 在这里面做一下记录. 过程: yum 安装: 工作机上安装 vncviewer 远程主机上安装: vnc ...

  2. mybatis 相关

    一.mybatis转义问题 mybatis中SQL在 mapper.xml 中书写时,如果有  < .>.<=.>=  时会出错,应该使用转义的写法. 写法一  转义 < ...

  3. Hacker News API

    Hacker News API中的URI和版本 API都由https://hacker-news.firebaseio.com提供. 单个条目信息 故事,评论,招聘,问答,以及投票都叫做条目.它们有各 ...

  4. mysql5.7如何修改密码以及密码如何忘记无密码登陆

    今天买了一台阿里云服务器,Centos7.3系统,环境是LAMP.学生价9.8元是真的很实惠了.然后想修改一下mysql服务器的密码(mysql版本5.7),结果操作失误,密码给忘记了,导致新旧密码都 ...

  5. ccf--20131203--最大矩形

    刚开始我是想依次计算i个相连矩形的面积,然后找出最大的面积,但是这种做法是时间复杂度是O(n*n),运行会超时. 这个是网上的一种做法,分别计算以第i个矩形作为高时,最大的面积.这就要以i为起始点,左 ...

  6. ios 百度地图使用

    第一步.引入 1.下载SDK  地址http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 2.解压出Baid ...

  7. Session共享的四种方法

    1. 基于NFS的Session共享 NFS是Net FileSystem的简称,最早由Sun公司为解决Unix网络主机间的目录共享而研发. 这个方案实现最为简单,无需做过多的二次开发,仅需将共享目录 ...

  8. P2430 严酷的训练 题解

    题目背景 Lj的朋友WKY是一名神奇的少年,在同龄人之中有着极高的地位... 题目描述 他的老师老王对他的程序水平赞叹不已,于是下决心培养这名小子. 老王的训练方式很奇怪,他会一口气让WKY做很多道题 ...

  9. linux随手笔记(Centos为主)

    用户管理 1.用户管理配置文件 用户数据文件:/etc/passwd [root@CentOS-Test software]# grep test /etc/passwd test:x:500:500 ...

  10. 关于for,while,dowhile效率测试

    引言 大家都知道每种循环对应的效率是不同的,书中都说在循环中使用减法的效率是比加法的效率高的,具体情况是怎么样,我们将详细列出各循环的执行效率问题.本文通过查看汇编代码比较各循环的效率以及i++,++ ...