黑马程序员_设计模式
一、设计模式概述
1、设计模式概念:
我们项目中有很多相同的东西,我们把这些相同的东西抽取出来
符合某种规则,这个称为设计模式。
二、简单工厂模式
1、如果有写完一个类不想让其他人创建这个类的对象怎么办?
第一种把构造私有化
第二种定义抽象类
2、面向对象的设计原则?
对修改关闭,对扩展开放
三、工厂方法模式
1、简单工厂模式的弊端
如果再有一个新的动物加入的话,就需要修改代码,不符合咱们的对修改关闭,不好。
2、工厂方法模式的好处
如果再有一个新的动物加入的话,不需要修改代码,只需要创建一个新的动物工厂类,和
那个动物的描述类就可以了,符合面向对象的开闭原则。
3、工厂模式中心思想
原来在main方法中创建对象,工厂模式就是在其他类中用方法封装创建对象的过程,
想要创建对象直接调用方法即可。
四、单例设计模式(饿汉式)
1、怎么样去写一个单例设计模式?
前提条件:一个类中只能创建一个对象
A、把构造方法私有化(为了不让外界随意创建对象)
B、在本类中 创建一个私有并且静态的本类对象
C、写一个公共静态方法返回第二步创建的那个对象。
代码:
class Student{
private Student(){}//使不能创建对象
private static Student s = new Student();、//创建一个私有并且静态的本类对象
public static Student getStudent(){//创建一个公共的访问方式
return s;
}
}
class Text{
public static void main(String[] str){
Student s1 = Student.getStudent();
Student s2= Student.getStudent();
System.out.println(s1==s2);
}
}
五、单例设计模式(懒汉
饿汉式(开发用):它是在类已加载就创建对象
懒汉式(面试用):在要用到它的时候才去创建(延迟加载思想)
写一个懒汉式的步骤:
A、把构造方法私有化(为了不让外界随意创建对象)
B、在本类中定义一个私有并且静态的变量并赋值为null。
C、定义一个静态且加锁的方法,并在方法中判断对象是否为null
如果为null则创建对象,如果不为null则直接返回对象。
代码:
class Student{
private Student(){}//使不能创建对象
private static Student s = null;
public static Student getStudent(){//提供一个公共的访问方式
if(s==null){//如果没有,就创建一个。
s = new Student();
}
return s;
}
}
class Text{
public static void main(String[] str){
Student s1 = Student.getStudent();
Student s2= Student.getStudent();
System.out.println(s1==s2);
}
}
注意:懒汉式如果是在多线程程序中的话,会出现线程安全问题,需要加锁。
七、模拟手机发展(用装饰模式)
1、什么是装饰模式?
对类的原有功能进行了修饰和包装扩充
2、应用步骤:
第一步:先找到被装饰的那个接口Phone
第二步:创建一个实体类PhoneImp去实现Phone这个接口
第三步:创建一个装饰类,实现Phone这个接口,调用实现就可以了。
黑马程序员_设计模式相关推荐
- 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结
黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日 day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...
- 黑马程序员_石头迷阵小游戏
黑马程序员_石头迷阵小游戏 源代码 一些说明: 1)这些是我看b站黑马程序员的视频,自己手打的,想分享一下,如果有侵权啥的请联系我,马上删除 2)一些比较重要的我都有给注释 3)工具idea idk版 ...
- 黑马程序员_异常(老毕视频总结及《疯狂java》补充)
----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+A ...
- 黑马程序员_基础测试
-------android培训.java培训.期待与您交流! ---------- 黑马程序员训练营基础测试题及个人代码(包含思路.步骤和基本注释) 1. 编写程序计算12+22+32+....+1 ...
- 解析python网络爬虫pdf 黑马程序员_正版 解析Python网络爬虫 核心技术 Scrapy框架 分布式爬虫 黑马程序员 Python应用编程丛书 中国铁道出版社...
商品参数 书名:Python应用编程丛书:解析Python网络爬虫:核心技术.Scrapy框架.分布式爬虫 定价:52.00元 作者:[中国]黑马程序员 出版社:中国铁道出版社 出版日期:2018-0 ...
- 黑马程序员_集合总篇_基础之重点
------- <a href="http://www.itheima.com" target="blank">android培训</a> ...
- 黑马程序员_面向对象
java是面向对象的编程,下面我想通过自己对java的学习,来谈谈对面向对象的理解. 给大家说一个非常熟悉的例子:老张开车去东北.用面向对象的方式考虑这个问题:车,找个司机,然后告诉司机我要 ...
- 黑马程序员_面向对象03
------- android培训.java培训.期待与您交流! ---------- 现在我们来看看面向对象的继承. 继承是从已有的类中派生出新的类新的类能吸收已有类的数据属性和行为,并能扩展新的能 ...
- 黑马程序员_面向对象的三大特征
---------------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! ---------------------- 1.面向对象的三大特征之一:封装 ...
最新文章
- php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
- CV之FR:DIY脚本通过人脸图像得到人脸特征向量并输出多张人脸图片之两两图片之间的距离
- Entity Framework Core 6.0 预览4 性能改进
- metinfo mysql 数据表_《MetInfo网站管理系统》常见问题整理
- scala学习-scala中的元组Tuple概念
- 13万字详细分析JDK中Stream的实现原理
- 来鹅厂干大事!腾讯广告技术类岗位高能来袭~
- 数据库镜像怎么还原数据库_如何创建数据库镜像
- ThreadLocal总结(jdk1.8源码)
- 无人自助便利店采用射频识别技术 30秒钟就能完成付款
- 滴滴开源基于 React 的移动端开发组件库-Pile.js
- NUC980开源项目9-官方Kernel编译
- 大数据爬虫前奏之Html和Css学习
- [GIS教程] 6.1空间数据采集与处理具体步骤
- oracle数据库刷内存语句,Oracle数据库内存助手
- 如何查看opencv版本
- PHP+经贸时间轴 毕业设计-附源码211617
- Python爬虫开发学习全教程第二版,爆肝十万字【建议收藏】
- C# 电子印章制作管理系统
- Sicily 1090. Highways
热门文章
- windows下,解决docker2375端口连不上,telnet不通
- postgresql源码学习(27)—— 事务日志⑦-日志落盘上层函数 XLogFlush
- illustrator插件-常用功能开发-锚点分隔路径-js脚本开发-AI插件
- Van der Waerden 定理
- WIN10 的虚拟内存pagefile.sys占用C盘资源的解决办法
- html页面不论如何缩放也不改变布局的相对位置
- 薅羊毛利器—Loon,Cookie放在本地一点也不担心
- 计算机考试ks文件夹,大学计算机考试PPT Word Excel都关了 但是装他们的文件夹KS没关 就提交了有事吗......
- emoji iphone android,Emoji Android to iphone
- 蓝桥杯第九届彩灯(键盘控制)