单例模式,工厂模式

单例模式

使用单例模式构建的类,在整个程序运行期间该类只存在一个实例对象。

实现方式
  • 用 private 修饰类的构造方法,这样就不能在类的外部使用 new 关键字来创建实例对象。

  • 在类的内部创建一个该类的对象,使用 private static 修饰。

  • 提供一个外部能获取该类对象的静态方法。

1.饿汉模式
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static final SingleLineDemo SINGLELINE_DEMO = new SingleLineDemo();

    public static SingleLineDemo getSingleLineDemoInstance() {

        return SINGLELINE_DEMO;
    }
}
2.懒汉模式
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static SingleLineDemo sLineDemo = null;

    public static SingleLineDemo getSingleLineDemoInstance() {
        // 存在线程安全问题
        if (sLineDemo == null) {
            sLineDemo = new SingleLineDemo();
        }
        return sLineDemo;
    }
}
3.综合升级
public class SingleLineDemo {

    private SingleLineDemo() {

    }

    private static SingleLineDemo sLineDemo = null;

    public static SingleLineDemo getSingleLineDemoInstance() {
        // 双重校验,解决线程安全,并效率相对较高
        if (sLineDemo == null)
            synchronized (sLineDemo) {
                if (sLineDemo == null)
                    sLineDemo = new SingleLineDemo();
            }

        return sLineDemo;
    }
}

工厂模式

工厂模式就是根据传入的标记,生产不同类的模式。

//接口定义公共规范
public interface IWidget {
    void widget();
}

public class FirstProduct implements IWidget {

    @Override
    public void widget() {
        System.out.println("产品1的组件");
    }
}

public class SecondProduct implements IWidget {

    @Override
    public void widget() {
        System.out.println("产品2的组件");
    }
}

 public static void main(String[] args) {

        IWidget productWidget = getProductWidget(0);
        productWidget.widget();
    }

    //工厂模式,根据标记生成相应的类
    public static IWidget getProductWidget(int type) {
        switch (type) {
            case 0:
                return new FirstProduct();

            case 1:
                return new SecondProduct();
        }
        return null;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容