Java中常用到的部分设计模式
下面我提到的很多模式我们在大神写的代码中经常遇到,或者自己在写代码时也会用,但很多时候对于初级程序员而言不知道或者不清楚,闲来无事,觉得有必要整理下,提醒自己日后代码要简洁、少冗余,也希望能帮助到更多像我这初入职场慢慢摸索的初级程序员,对你有帮助请点赞评论,有错误或者理解不到位的地方希望私信不要踩,妹子比较情绪化,给个面子,哈哈~~~:
学如逆水行舟,不进则退。 —【名人名言】
- 普通工厂模式
- 单例模式
创建型模式
1.普通工厂模式
工厂模式有普通工厂模式和抽象工厂模式,在这里我先写普通工厂模式,我们平时可能用的比较多。
本人是吃货,就拿吃举例子吧,我们吃中国菜和吃西餐,都要进行吃这个动作,所以我们把它定义成一个接口,多次实现即可。
定义吃的这个接口
public interface Eater{
public void Eat();
}
定义两个实现类
1)吃中国菜的实现类
public class ChinaFoodEat implements Eater{
public void Eat() {
System.out.println("this is ChinaFoodEat!");
}
}
2)吃西餐的实现类
public class WesternFoodEat implements Eater{
public void Eat() {
System.out.println("this is WesternFoodEat!");
}
}
写一个公共方法
public class EatFactory {
public static Sender ChinaFood() {
return new ChinaFoodEat();
}
public static Sender WesternFood() {
return new WesternFoodEat ();
}
}
定义测试类
public class FactoryMethod {
public static void main(String[] args) {
Eater eater = EatFactory.ChinaFood();
eater.Eat();
}
}
结果是:this is ChinaFoodEat!
工厂模式的特点就是可以多扩展,有需要创建工厂类即可,一般我们写静态方法,直接用类调用静态方法,省去创建对象的步骤,比较方便。
2.单例模式
单例模式保证在JVM中只有一个实例存在,它的好处显而易见:
1)只能创建一个实例,减轻了gc的回收机制的压力。
2)不用类经常频繁的创建实例,节省开销。
单例模式有懒汉式饿汉式,现附上代码,再一一解释:
饿汉式
public class HungrySingleton {
private static HungrySingleton hSingleton = new HungrySingleton();
private HungrySingleton() {}
public static HungrySingleton gethSingleton() {
return hSingleton;
}
public static void sethSingleton(HungrySingleton hSingleton) {
HungrySingleton.hSingleton = hSingleton;
}
}
上面的代码是饿汉式单例模式,何谓饿汉式,即在类加载时就创建对象实例,饿了嘛,不管用不用,先把这个对象给我创建出来,这样做无需判断,节省时间。当HungrySingleton类加载时,无参构造方法就创建了对象,将这个对象给予了静态属性hSingleton。
懒汉式
public class LazySingleton {
private static LazySingleton laSingleton = null;
private LazySingleton() {}
public static LazySingleton getLaSingleton() {
if (laSingleton==null) {
laSingleton = new LazySingleton();
}
return laSingleton;
}
}
上面的代码是懒汉式单例模式,与上面饿汉式代码相比,显而易见是等到需要时判断后才创建实例。这种比较适合多线程,是线程安全的。