• 六大原则
  • 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. [转]extern "C"的作用

    extern "C"的主要作用就是为了能够正确实现C++代码调用其它C语言代码. 加上extern “C”后,会指示编译器将这部分代码按C语言进行编译,而不是C++的.这是因为C+ ...

  2. ccf--20151203--画图

    本题思路如下: 题目和代码如下: 问题描述 试题编号: 201512-3 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 用 ASCII 字符来画图是一件有趣 ...

  3. 关于plist文件的那些事

    今天遇到新生问一个问题,就是用自己定义了一个plist文件,然后可以往里面写东西,但是写过再次运行的时候里面的数据总是最后一次写入的数据.后来就专门研究了一下plist文件. 大家都知道当你创建一个项 ...

  4. java news website

    http://javacrawl.com/ https://dzone.com/java-jdk-development-tutorials-tools-news https://www.infowo ...

  5. WPF防止重复运行实例

    1.方法一 在app.xaml.cs下添加如下代码: /// <summary> /// App.xaml 的交互逻辑 /// </summary> public partia ...

  6. mysql之4;

    1表之间的关系: 2select查询语句: 1表之间的关系 (1)多对一:(一个表里的多条记录对应另一个表里的一个记录) 建立多对一的关系需要注意1 先建立被关联的表,被关联的字段必须保证是唯一的2 ...

  7. exec dbms_stats.gather_schema_stats 手动优化统计

    Oracle10g或以上版本.exec dbms_stats.gather_schema_stats(ownname => 'DFMS', options => 'GATHER AUTO' ...

  8. Java自定义类加载和ClassPath类加载器

    1 自定义类加载器: 实现规则: 自定义类加载器,需要重写findClass,然后通过调用loadClass进行类加载(loadClass通过递归实现类的双亲委派加载) package com.dax ...

  9. Spring中实现多数据源事务管理

    文章转自  https://www.2cto.com/kf/201507/424229.html 前言 由于项目中引入了多个数据源,并且需要对多个数据源进行写操作,那么多数据源的事务管理自然成了不可避 ...

  10. Elasticsearch 数据搜索篇·【入门级干货】===转

    ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的REST API.本篇就通过一些简单的搜索命令,帮助你理解ES的相关应用.虽然不能让你理解ES的原理设计,但是可以帮助你理解ES,探寻更多的 ...