黑马程序员_设计模式
2015-07-14 00:58
267 查看
一、设计模式概述
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这个接口,调用实现就可以了。
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这个接口,调用实现就可以了。
相关文章推荐
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 十道海量数据处理面试题与十个方法大总结
- 读《方法论、方法论——程序员的阿喀琉斯之踵》有感
- 面试问题之:Dalvik VM和JVM的区别(2)---架构层
- 面试问题之:Dalvik VM和JVM的区别(1)
- 黑马程序员 IO流 流操作的基本规律
- 黑马程序员_正则表达式和反射
- 程序员必须要知道这11条开发习惯
- 评注《程序员的困境》
- 黑马程序员——IOS基础之OC---类使用的常见错误汇总
- 程序员容易犯的十大错误
- 读书笔记之《程序员的自我修养--链接、装载与库》
- 阿里巴巴面试与面试技巧
- 黑马程序员-学习日记(反射)
- 黑马程序员—IO(二)File类、Properties类、打印流、序列流(合并流)
- 黑马程序员—IO(一)流概述、字符流、字节流、流操作规律
- 黑马程序员-学习日记(多线程安全问题和死锁认识)
- 黑马程序员-学习日记(多线程间的通信)
- 黑马程序员-学习日记(多线程的初步认识)
- 黑马程序员-学习日记(集合类)