一个类的用户应该直接调用new吗?

问题描述 投票:0回答:1

或者他们应该做这样的事情

   Public Shared Function createOrders(ammount As String, base As String, quote As String, exchange As ExchangesClass, time As String, price As String, id As String, sellinginsteadofbuying As String) As OrdersAtExchange
        Dim a = New OrdersAtExchange
        a._ammount = Val(ammount)
        a._exchangeObject = exchange
        a._base = base
        a._quote = quote
        a._time = Date.Parse(time)
        a._price = Val(price)
        a._id = id
        a._market = CoinClass.MarketBaseQuoted(exchange.Exchange, base, quote)

        If a._market Is Nothing Then
            Dim b = 1
        End If
        a._isSellingInsteadOfBuying = sellinginsteadofbuying.ToLower.Trim = "sell"
        Return a
    End Function

基本上我看到的程序不是使用new而是使用createObject函数。它是共享的。

我有点看到这是一个好主意。我想知道在哪里。

在vb.net中使用new有点复杂,因为一个新函数可能需要调用另一个新函数。还有一些变量是“初始化的”。有些是在函数内设置的。

使用共享的创建对象似乎可以消除这个问题。

但这真的是个好主意吗?

我想我记得Objective-c也做这种事情。

vb.net
1个回答
1
投票

使用共享函数或由类的用户创建新对象完全取决于类的目标。

使用共享函数创建实例有点类似于为类设置构造函数来设置它的状态。

一些场景何时使用共享类将是。 1.当你不想把控制权交给外界来创造你班级的对象时。 2.当你总是希望类的对象在创建时具有特定的状态。 3.在Singleton设计模式实现的情况下,也可以使用共享功能。

同样,如果您希望用户完全控制类的对象创建并分配其状态,则可以允许使用new关键字创建对象。

总是一个好的想法是让一个总是处于安全状态的类和任何给定的时间点,这可以通过共享功能来实现。

希望这可以帮助 !!!

© www.soinside.com 2019 - 2024. All rights reserved.