设计模式:
模式化的解决方案
三类
创见型模式:
单例模式,工厂模式
结构型模式:
装饰模式,代理模式
静态代理,动态代理
行为型模式:
模板模式,迭代器模式
单例模式:
又名单实例模式
使用这个模式设计的类,全局应保证只有一个实例,不管什么时候都只有一个实例
package day30;
/**
*
* 单例模式->当前类的实例,全局唯一
*/
public class Box {
private int width;
private int height;
private static Box box = new Box();//定义一个私有的当前类型的属性
private Box(){//私有的构造方法,外接就不能通过new 来创建实例了
}
public static Box getBox(){//定义一个公用的静态方法,用于获取当前类型的,静态方法需要使用static属性
return box;
}
public int getWith(){
return width;
}
public int getHeight(){
return height;
}
public void setWith(int width){
this.width = width;
}
public void setHeight(int height){
this.height =height;
}
}
package day30;
public class TestBox {
public static void main(String[] args){
Box b1 = Box.getBox();
b1.setHeight(2);
Box b2 = Box.getBox();
System.out.println(b1 == b2);
System.out.println(b2.getHeight());
}
} 单例模式的实现步骤:
1·私有化构造方法
2·提供一个共有的静态的可以获取当前类型实例的方法
3·定义一个私有的静态的当前类型的实例,给步骤2的方法返回
模板模式:
定义一个操作中的算法过程的骨架,而将部分细节操作延迟到子类去实现
package day30;
public abstract class Person {//抽象类,对于模板大多是抽象的
public void sayHello(){//介绍自己
System.out.println("大家好");
System.out.println("我叫"+getName());
System.out.println(getInfo());
System.out.println(sayGoodBye());
}
public abstract String getName();
public abstract String getInfo();
public abstract String sayGoodBye();
}
package day30;
public class Student extends Person{
public String getInfo(){
return "个人基本情况、教育背景、学习经历、外语和计算机应用水平、工作经验、个人成果获奖情况、能力和专长";
}
public String getName(){
return "lmdtx";
}
public String sayGoodBye(){
return "88";
}
}
package day30;
public class Teacher extends Person{
public String getInfo(){
return null;
}
public String getName(){
return "";
}
public String sayGoodBye(){
return "さようなら";
}
}
package day30;
public class TestPerson {
public static void main(String[] args){
Person p1 = new Student();
p1.sayHello();
Person p2 = new Teacher();
p2.sayHello();
}
}
本文出自 “浪漫的偷笑” 博客,转载请与作者联系!
原文:http://lmdtx.blog.51cto.com/6942028/1740748