单例设计模式和抽象模板模式

28 篇文章 0 订阅
24 篇文章 0 订阅
package set;

public class Set
{
        public static void main(String[] args)
        {
           // Gf gf = new Gf();就不能直接new了,只能通过静态方法调用
            /*Gf gf = Gf.getGf();
            Gf gf1 = Gf.getGf();
            System.out.println(gf==gf1);
            */
            BB bb = BB.back();
        }
}

class Gf
{
    private static String name;
    /*
    表演下饿汉式
    为什么叫饿汉式呢?我觉得时因为,npy只有一个,但好多然就像饿汉一样
    主要的效果如下,我只想我的的对象创建只有一个就可以用
    流程如下
    1先将构造器私有化
    2在类的内部直接创建
     */
    private static Gf gf = new Gf("my wife");
    private Gf(String name)
    {
        this.name = name;
    }

    public static Gf getGf()
    {
        System.out.println(name);
        return gf;
    }
}
class BB
{
    /*
    这个时单例的懒汉
    懒汉式就比较好理解了,就是不用我就不创建
    做法
    1构造器私有化
    2定义一个静态变量或方法
    3再来个公开静态方法来创建变量
     */
    private static String name;
    private static BB bb;//这里很关键,用这个bb判断有没有调用
    private BB(String name)
    {
        System.out.println("edg");
        this.name = name;//普通方法可以调所有
    }
    public static BB back()
    {
        if(bb == null)//只有这个能调用
        {
            return bb = new BB(name);
        }
        return bb;
    }
}

学了挺多东西之后,来说说单例看了上面代码就应该知道了吧

但是他们也并非无懈可击,就比如说饿汉式,你如果没有调用但是对象就有了,这会造成资源的浪费,至于懒汉式的缺点就在与多线程时会出大问题,至于出什么问题作者也没学,反正还要做些操作懒汉式才不会出现问题。

还有一种抽象式,你只需把工作放在父类,加abstract,将必须的部分放在父类,将抽象反复给子类重写就好了。自己去细琐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值