java设计模式笔记

1、为什么要学习设计模式
A:让我们对设计模式有一定的了解和理解
B:加深我们对面向对象中的抽象类和接口的理解
C:搞定设计模式的面试
单例设计模式
工厂模式 适配器 模板方式 代理...

2什么是设计模式
建筑工地上,工人在盖房子,但是看不到制造砖的人
在汽车厂房中,你看到的是组装汽车的人,而不是制造零件的人

在软件开发中,UI设计师,系统分析师,代码人员

因此,一些专家就把他们在解决某一问题的过程中积累的一些经验进行总结,以帮助后来的人更好的掌握从抽象到具体的方法,这就是设计模式

3.设计模式的学习路线
A:面向对象思想的建立 (封装 继承 多态)
B:UML
把我们的思想通过一些符号表示出来,任何软件开发人员都是能够看懂的。
C:了解常见的设计模式
D:学习并使用设计模式


封装:隐藏实现的一些细节,提供一些公共的访问方式
继承:可以具备某些已经存在的功能
多态:对象在不同时刻体现的不同的状态

设计思想的区别;
抽象类:是对一组具有相同的属性和方法的在逻辑上有关系的一种抽象(is a)。
接口:对一组具有相同属性和方法在逻辑上不相关的事务的一种抽象(like a)。

面向对象设计的几个基本原则:
A:单一职责
系统中的每一个对象应该只有一个单独的职责,所有对象关注 的应该是自身职责的完成。基本思想:高内聚,低耦合

B:开闭原则
一个对象对扩展开放,对修改关闭
基本思想:对类的改动是通过增加代码进行的,而不是修改现有的代码

C:里氏替换原则
在任何父类出现的地方,都可以使用子类来替代

D:依赖注入原则
要依赖于抽象,不要依赖于具体的实现
基本思想:在开发中尽量的面向接口编程

E:接口分离原则
不要去使用一些不需要的使用的功能
基本思想:一个接口不要提供太多的行为。

F:迪米特原则
一个对象对其他的对象应该尽可能少的了解。
基本思想:降低耦合

G:优先使用组合而不是继承原则
因为父类的改变都可能影响子类的行为。

10.设计模式分类
创建型模式:创建对象。
结构型模式:对象的组成及对象的关系
行为型模式:对象的行为,对象能够做什么(功能)

11.创建型模式
简单工厂模式
Animal(抽象类),Dog,Pig,AnimalFactory, AnimalTest
工厂方法模式
抽象工厂模式

----------------------------------------------------------

1、单例模式(面试)
单例模式:单一的实例。保证类在内存中只有一个对象
举例:windows的打印服务,网站计数器
java中的应用:Runtime

2.如何保证内存中只有一个对象?
A:把构造方法私有,为走了不让外界创建对象。
B:在类中去创建一个对象
C:通过一个公共的访问方式给外界提供一个入口

3.饿汉式单例模式

4.懒汉式单例模式
延迟加载思想:我们什么时候需要(对象new等),你就什么时候给。

5.那么,我们在开发中到底是用谁呢?
一般我们开发中采用第一种方案,也就是饿汉式

原因:
前提:多线程安全问题。
面试的时候,会面试懒汉式。
并且,面试懒汉式主要是面试下面几个问题:
A:延迟加载思想
B:线程安全问题:
a:线程安全问题是怎么产生的
b:线程安全问题是怎么解决的 (加一个关键字:同步synchronized)


6.其实在JDK提供的类中,已经有单例模式应用,如: Runtime类


1.装饰模式:
顾名思义,装饰模式,就是指对XXX进行包装。

其实就是给对象添加新的功能。

2.给对象添加新的功能
面向对象:继承。
装饰模式。

3.举例:我们都有手机,手机具备打电话的功能。彩铃 电话 音乐
Phone ,Colorphone,Musicphone,Musiccolorphone
继承实现和装饰模式实现

4.java的IO流(装饰模式的体现)

原文地址:https://www.cnblogs.com/zouteng/p/3569145.html