资讯专栏INFORMATION COLUMN

OOP Design

reclay / 520人阅读

摘要:是私有的,不可以自己形成实例不可以被引用,用一个的方法来生成实例和获取实例,也就是封装。这段代码在多线程下是不可行的,因为是的,会有问题,多个线程同时访问这个函数时,会生成多个。

Approach

Step 1: Handle Ambiguity (figure out the question)
Step 2: Define the Core Objects
Step 3: Analyze Relationships
Step 4: Investigate Actions (details)

Design Patterns Singleton
public class Singleton {
    private static Singleton _instance = null;
    protected Singleton() {}
    public static Singleton getInstance() {
        if(_instance == null) {
            _instance = new Singleton();
        }
        return _instance;
    }
}

_instance是私有的,不可以自己形成实例不可以被引用,用一个getInstance的方法来生成实例和获取实例,也就是封装(encapsulation)。
这段代码在多线程下是不可行的,因为getInstance()是public的,synchronization会有问题,多个线程同时访问这个函数时,会生成多个instance。

利用synchronized和volatile
public class Singleton {
    private volatile static Singleton _instance = null;
    protected Singleton() {}
    public static Singleton getInstance() {
        if(_instance == null) {
            synchronized(Singleton.class) {
                if(_instance == null) {
                    _instance = new Singleton();
                }
            }
        }
        return _instance;
    }
}
Volatile

volatile has the feature of "synchronized".

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66474.html

相关文章

  • 论文解读:Design patterns for container-based distribut

    摘要:论文认为,继面向对象编程所引领的软件开发革命之后,如今似乎在分布式系统开发中也发生着一场相似的革命基于容器化组件构建的微服务架构。容器的一大独特优势在于良好的边界恰好适合应用开发的隔离性。这似乎是对编程艺术的重申。 这是由Kubernetes创始人发表的论文,总结了基于容器的分布式系统的设计模式,让我们来一览究竟吧。 论文认为,继OOP(面向对象编程)所引领的软件开发革命之后,如今似乎...

    Gemini 评论0 收藏0
  • 论文解读:Design patterns for container-based distribut

    摘要:论文认为,继面向对象编程所引领的软件开发革命之后,如今似乎在分布式系统开发中也发生着一场相似的革命基于容器化组件构建的微服务架构。容器的一大独特优势在于良好的边界恰好适合应用开发的隔离性。这似乎是对编程艺术的重申。 这是由Kubernetes创始人发表的论文,总结了基于容器的分布式系统的设计模式,让我们来一览究竟吧。 论文认为,继OOP(面向对象编程)所引领的软件开发革命之后,如今似乎...

    AdolphLWQ 评论0 收藏0
  • [CS101] Programming Languages and OOP 编程语言及面向对象基础题

    摘要:编程语言及面向对象基础题 编程语言及面向对象基础题 Design Pattern What is singleton? Whats its cons and pros? How to implement it?Definition: Singleton pattern is a design pattern that ensure that only one instance of a...

    Drinkey 评论0 收藏0
  • PHP设计模式系列之入门

    摘要:设计模式系列之入门设计模式是一套被反复使用多数人知晓的经过分类编目的代码设计经验的总结。毫无疑问,设计模式于己于他人于系统都是多赢的设计模式使代码编制真正工程化设计模式是软件工程的基石脉络,如同大厦的结构一样。 PHP设计模式系列之入门 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    animabear 评论0 收藏0
  • Design Pattern的万剑归宗 => Mediator

    摘要:大意就是作者把种不断的重组归纳抽象直道最后抽象为一种设计模式,。而所有的关注的核心问题就是如何控制信息流但是我个人认为核心是如何解耦。再根据信息流划分出对象在系统中担任的种角色,。所以归为一种核心所有的的职责都是控制。 Overview 今天看了YouTube上的一个讲Design Pattern的视频,把这个视频的大意给大家分享一下,该视频的作者是Anthony Ferrara。 ...

    yuanzhanghu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<