设计模式部分总结

来源:互联网 发布:淘宝 管控 临时下架 编辑:程序博客网 时间:2024/06/15 15:31
设计模式部分总结


1.简单工厂模式
public abstract class Animal {
public abstract void eat();
}
public class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼");
}
}
public class Dog extends Animal{
public void eat(){
System.out.println("狗吃肉");
}
}
public class AnimalFactory{
private AnimalFactory(){
}
public static Animal createAnimal(String type){
if("dog".equals(type)){
return new Dog();
}else if("cat".equals(type)){
return new Cat();
}else{
return null;
}
}
}
public class AnimalDemo{
public static void main(String[] args){
Animal a = AnimalFactory.createAnimal("dog");
a.eat();
a = AnimalFactory.createAnimal("cat");
a.eat();
a = AnimalFactory.ctrateAnimal("pig");
if(a != null){
a.eat();
}else{
System.out.println("暂时不提供这种动物!");
}

}
}
2.单例模式
A:单例模式的思想
保证类在内存中只有一个对象
B:如何实现类在内存中只有一个对象?
a:把构造方法私有
b:在成员位置自己创建一个对象
c:通过一个公共的方法提供访问

C:饿汉式(不会出问题的单例模式)
public class Student {
private Student(){
}
private static Student s = new Student();
public static Student getStudent(){
return s;
}
}
public calss StudentDemo{
public static void main(String[] args){
Student s1 = Student.getStudent();
Student s2 = Student.getStudent();
System.out.println(s1 == s2);//true
}
}

D:懒汉式(可能存在线程安全问题)
public calss Student{
private Student(){
}
private static Student s = null;
public synchronized static Student getStudent(){
if(t == null){
t = new Student();
}
return t;
}
}
public class StudentDemo{
public static void main(String[] args){
Student s1 = Student.getStudent();
Student s1 = Student.getStudent();
System.out.println(s1 == s2);//true
}
}
0 0
原创粉丝点击