Java中常用到的部分设计模式

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;
    }
}

上面的代码是懒汉式单例模式,与上面饿汉式代码相比,显而易见是等到需要时判断后才创建实例。这种比较适合多线程,是线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值