黑马程序员--设计模式

来源:互联网 发布: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();
}
}

装饰者模式:当我们觉得某个类的内容需要拓展一些功能的时候,我们会首先想到继承,确实继承可以解决在原来的基础上拓展功能
但是当子类想用原来的功能,就必须要用父类来实现,但是如果某一天父类功能改变了,我还想让子类有同样的功能和拓展功能,
这样是不能实现的。
所以我们有了装饰者设计模式,建一个装饰类,把被装饰的类作为构造方法的参数传进来,就可以实现功能的拓展,
这就是装饰者模式

0 0
原创粉丝点击