黑马程序员_设计模式
来源:互联网 发布:亲和素淘宝,创始人 编辑:程序博客网 时间:2024/04/27 15:01
一、设计模式概述
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入门_设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 十道海量数据处理面试题与十个方法大总结
- Shortest Palindrome
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- Lab - ROP Primer
- 在高并发分布式系统中生成全局唯一Id
- 黑马程序员_设计模式
- POJ 3468 A Simple Problem with Integers
- 黑马程序员_Java
- Java开发中的23种设计模式详解(转)
- 黑马程序员-第十篇图形化用户界面
- 在rails 4 中处理在ajax调用方式下面, 进行错误捕获,前台显示的过程
- 关于在ubuntu上调试ODOO8.0的几个问题
- Kafka 学习笔记(六)之Kafka Trouble Shooting (下)
- Android程序退出彻底关闭进程的方法