黑马程序员--设计模式
来源:互联网 发布:mysql 安全模式启动 编辑:程序博客网 时间:2024/04/29 11:17
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
设计模式:
设计模式是一种思想(不是技术,技术是像IO 反射 集合这样的),是一种帮助开发人员完成某些代码上的逻辑,
使代码的逻辑更严谨,是代码更加简洁,美观。(设计模式并没有提高代码的运行效率和速度,
数据结构的思想:拿空间换时间 拿时间换空间)
通常项目比较庞大的情况下才能体现出设计模式的好处
创建型:创建对象。工厂模式,单例模式。
结构型:对象间的关系。装饰模式。
行为型:对象能够做什么。模板模式。
工厂模式:当我们想要获取某个对象的时候,想在获取对象之前做一些初始化的动作就用到了工厂模式
工厂模式基本上是最常用的设计模式之一,设计模式通俗的来说就是“做某件事的通用的方法”,这些方法都是被广泛使用、经过长时间考验的,对于解决某个特定的问题有非常好的效果。设计模式基本上到了“软件设计”的层面,它与具体的程序设计语言无关,也没有实现,只是包含了一个大致的架构,它是一种思想。
单例设计模式:当我们想要在所有程序运行状态中,所用的一个类的对象,都是同一个对象的时候就用单例模式
单例饿汉式举例:
public class Student {
// 把构造方法私有,是为了不让外界随意创建
private Student() {
}
// 类本身要创建一个对象。
// 由于静态只能访问静态,所以这里加静态
//为了不让外界通过类名直接访问s成员变量,就加私有
private static Student s = new Student();
// 提供公共的方式让别人使用
// 为了让外界能够直接通过类名访问该方法,需要对该方法加静态
public static Student getStudent() {
// return new Student(); //这是有问题的
return s;
}
}
单例懒汉式举例:
public class Teacher {
private Teacher() {
}
private static Teacher t = null;
public synchronized static Teacher getTeacher() {
// t1,t2,t3三个线程过来了
// 如果t是null的时候,才创建对象
if (t == null) {
//t1进来了,CPU的执行权就被t2抢到了,同理t3
t = new Teacher();
}
return t;
}
}
模板设计模式:当我们执行的某些程序时发现执行的所有的程序 外面的框框都不会变,只需要改变同样地方的一些东西的时候,就可以使用模板模式。
public class PrintDemo1 extends PrintTemplet {
public void printHead() {
System.out.println("采用第一种方案打印头");
}
public void printBody() {
System.out.println("采用第一种方案打印中间");
}
public void printBottom() {
System.out.println("采用第一种方案打印尾");
}
}
public class PrintDemo2 extends PrintTemplet {
public void printHead() {
System.out.println("采用第二种方案打印头");
}
public void printBody() {
System.out.println("采用第二种方案打印中间");
}
public void printBottom() {
System.out.println("采用第二种方案打印尾");
}
}
public abstract class PrintTemplet {
public void print() {
printHead();
printBody();
printBottom();
}
public abstract void printHead();
public abstract void printBody();
public abstract void printBottom();
}
public class PrintTest {
public static void main(String[] args) {
PrintTemplet pt = new PrintDemo1();
pt.print();
pt = new PrintDemo2();
pt.print();
}
}
装饰者模式:当我们觉得某个类的内容需要拓展一些功能的时候,我们会首先想到继承,确实继承可以解决在原来的基础上拓展功能
但是当子类想用原来的功能,就必须要用父类来实现,但是如果某一天父类功能改变了,我还想让子类有同样的功能和拓展功能,
这样是不能实现的。
所以我们有了装饰者设计模式,建一个装饰类,把被装饰的类作为构造方法的参数传进来,就可以实现功能的拓展,
这就是装饰者模式
- 黑马程序员:设计模式
- 黑马程序员-设计模式
- 黑马程序员-----------设计模式
- 黑马程序员-设计模式
- 黑马程序员--设计模式
- 黑马程序员 设计模式
- 黑马程序员-----设计模式
- 黑马程序员-策略设计模式
- 黑马程序员-笑谈设计模式
- 黑马程序员--初识设计模式
- 黑马程序员------装饰设计模式
- 黑马程序员_设计模式
- 黑马程序员-装饰设计模式
- 黑马程序员---单列设计模式
- 黑马程序员_设计模式
- 黑马程序员_设计模式
- 黑马程序员 单列设计模式
- 黑马程序员-Java设计模式
- 正则元字符的意义
- HTTP状态码及Msg定义
- 【整理】Memorandum of MATLAB
- 内部排序
- ionic 中的navigation,tabbar及返回按钮定制
- 黑马程序员--设计模式
- 【iOS程序启动与运转】- RunLoop个人小结
- 畅通工程续(2008浙大研究生复试热身赛[最短路径] hdoj 1874)
- android学习笔记之客户端与服务端保持session登录状态
- axis2 1.5.5 + Websphere 8.0 ,FileUploadException 与 NoInitialContextException 的解决办法
- 听故事搞懂多线程开发-- 屎壳郎老板和它的收费公厕
- Centos中将openjdk切换为Oracle Jdk导致Tomcat无法正常启动的问题
- 现今市场对异构并行计算领域人员的需求
- 数组名a与&a的区别