3. 延遲例項化物件
在預設情況下,程式一開始就會把配置檔案中的所有物件都進行例項化。
為了驗證這一點,我們可以只在Main方法裡只寫獲取上下文,不寫GetObject。
static void Main(string[] args)
{
IApplicationContext context = ContextRegistry.GetContext();
Console.ReadLine();
}
可以看到控制檯列印了 "建立了A的例項",說明執行了A的構造方法,建立的A的例項。
如果配置檔案裡面有大量的物件,程式一開始建立大量物件的例項,無疑會造成程式啟動緩慢。
這個時候可以採用延遲例項化物件的方法,將不必要在一開始就例項化的物件放到需要用到的時候再去例項化。
為了對照說明,再建立一個類B
在物件XML檔案中加上物件b的定義,並且加上lazy-init="true"的屬性namespace namespaceA { public class A { public A() { Console.WriteLine("建立了A的例項"); } } public class B { public B() { Console.WriteLine("建立了B的例項"); } } }
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object name="a" type="namespaceA.A, ConsoleApplication1" /> <object name="b" type="namespaceA.B, ConsoleApplication1" lazy-init="true" /> </objects>
在Main方法中驗證,獲取上下文之後,做一個控制檯輸入的分割。 可以看到程式一開始只例項化了a,按下回車,執行到GetObject時,物件b才被建立。
static void Main(string[] args)
{
IApplicationContext context = ContextRegistry.GetContext();
Console.ReadLine();
B b = context.GetObject("b") as B;
Console.ReadLine();
}
相關推薦
3. 延遲例項化物件
在預設情況下,程式一開始就會把配置檔案中的所有物件都進行例項化。 為了驗證這一點,我們可以只在Main方法裡只寫獲取上下文,不寫GetObject。 static void Main(string[] args) {
python中如何統計一個類的例項化物件
類中的靜態變數 需要通過類名.靜態變數名 來修改 ;通過物件不能修改 python中如何統計一個類的例項化物件?? 1 class Person: 2 #靜態變數count,用於記錄類被例項化的次數 3 count = 0 4 5
2018-10-15 例項化物件 Instantiate與銷燬遊戲物件GameObject.Destroy
GameObject.Instantiate(Object, Vector3, Quaternion, transform.parent); Quaternion[四元數]:例項化後物件的旋轉情況 Quaternion.identity:無旋轉 &nb
collection.namedtuple例項化物件
from collection import namedtuple # human = namedtuple('human', ['name', 'height', 'age', 'sex']) h = human('James', 180, 32, 0) # then you can use h.na
根據字串的形式,自動匯入模組並使用反射找到模組中的類,並例項化物件,利用importlib和getattr實現的
例如: auth資料夾下一個SCRF.py檔案,裡面有一個Cors類 class CORS(object): def process_request(self): print('666') auth資料
java反射例項化物件
-Class類Java中手動建立的每一個類,在編譯後JVM都會為其建立一個Class類物件,在這個Class類物件中儲存了所建類的資訊。可通過Class類提供的方法為一個類例項化物件,區別與new關鍵字建立物件,前者是在類已經編譯好的情況下,通過指定類名來建立例項化物件,後者
jsp呼叫javaBean方式一(new例項化物件)
1:javabean package cn.mldn.lxh.demo; /** * javaBean 留給JSP呼叫 * * @author Administrator * */ public class SimpleBean {private Str
java內部類例項化物件
package com.lzcc.oop.testpolymorphism; /** * 多型測試 * * @author 包子 * */ public class Person {
c#中用反射的方式例項化物件
定義一個類: namespace Example { public class ExampleClass { public int iID = 0; public string strName = ""; public ExampleClass() { iID
反射機制--獲取例項化物件
在上一節中(點選開啟連結),獲取到了位元組碼檔案物件,那麼如何獲取該位元組碼檔案對應的Person物件呢?(仍然使用在text包下定義的Person類。) 執行早期的方法: package text; public class ReflectDemo2 { publ
Spring-Bean的3種例項化
構造器例項化 bean1.java package cn.itcast.instance.constructor; public class Bean1 { } InstanceTest1.java package cn.itcast.instance.constructo
js中 建構函式,原型,和例項化物件
1,建構函式建立物件造成的記憶體浪費,和原型的引入 function Person(name,age){ this.name = name; this.age = age; this.introduce = function
介面和抽象類不能例項化物件
ArrayList points = new ArrayList(); Iterator i = points.iterator(); points是ArrayList的物件,用points.iterator轉換成迭代器的形式也就是i物件; i是Iterator的引用
MINE筆記-面向物件程式設計,原型鏈的理解,建構函式,原型物件,例項化物件,prototype 運用
// to do list 建立建構函式,例項化物件,來做面向物件程式設計 // 建立建構函式--原型函式(原型物件) function person(name,age,id){ this.name = name; this.age = age; this.id =id // c
建構函式是什麼,有什麼作用,例項化物件,面向物件分析
js裡的面向物件分析-(建立例項化物件) ECMAScript 有兩種開發模式:1.函式式(過程化),2.面向物件(OOP)。面向物件的語言有一個標誌,那就是類的概念,而通過類可以建立任意多個具有相同屬性和方法的物件。但是,ECMAScript 沒有類的概念,因此它的物件也與基於類的語言中的物件
python 根據類名例項化物件
方法一: class obj(object): pass a = eval('obj()') 方法二: 如果是經常需要這樣可以 #將用來建立物件的字串預編譯成code物件. create_obj = compile('obj()',
C++只在棧或堆上例項化物件
C++如何讓類物件只能在堆(棧)上分配空間 一般情況下寫一個類都是可以採用new在堆上分配空間,或直接採用 類名+物件名 的方式在棧上分配空間。但有時候,如果想讓一個類只能在棧上或者堆上分配空間,又該怎麼實現呢? 下面分別來介紹如何定義只能在棧上或堆上例項化
Delphi根據字串例項化物件
我們可以通過ClassRegistry單元的TClassRegistry類很輕鬆的根據字串創建出物件。 下面是該類幾個主要函式的說明: Code// 獲取TClassRegistry自身的單例引用classfunction GetClassRegistry: TClassRe
java 類的建立,如何通過類例項化物件。
一、 1.建立的類名要大寫。例如Person類,P要大寫。 2.編寫類的屬性,即成員變數。注意屬性對應的資料型別,一般類似身份證號的資料型別都用String。 2.構造方法。當你不寫構造方法時,系
IOS延遲例項化
這該死的程式碼片斷怎麼不好使了?搞了N次了 IOS延遲例項化,是在IOS開發中經常用到的一種方式. 假設我們定義有屬性: @property (nonatomic, strong) NSMutableData *webData; 並對其展開,以自動生成setter和ge