對象屬性解釋、對象屬性查詢

來源:互聯網
上載者:User

 

三層架構、MVC、領域設計等等要解決的問題就是各行其道,業務做業務的事情,顯示做顯示的事情,這個大家都能理解。他們之間的該如何協助每個人的理解都不一樣,這裡我提供一種方法,供大家參考。

我們知道,領取驅動設計提供了一種分類方法,使得我們有效區分不同對象,其中部分值對象或引用對象給使用者提供用於展現,倉儲或服務為使用者提供業務支撐。編程人員依據對象編寫介面。這個過程沒有問題,問題出現在細節上。

三個對象

表

欄位

 

Employee(員工)

 

 

 

EmployeeId

 

 

DepartId

 

 

EmployeeName

 

Depart(部門)

DepartId

 

 

DepartName

 

Salary(工資)

 

 

 

EmployeeId

 

 

TypeName

JBGZ(基本工資)

GWGZ(崗位工資)

 

Money

 

 

對象屬性解釋

以MVC為例,一般情況下編程時我們在介面中都是通過寫入程式碼在View中綁定資訊,例如Employee.EmployeeName,Employee.Depart.DepartName,對工資的取值需要一個迴圈。提交後在Controll中擷取值,然後又解析、賦值,比如:將介面的選擇的”開發部”從資料庫中檢索一下,然後取出Id賦值到Employee.DepartId上。就這樣相同功能的不同實現代碼開始蔓延。

這裡的所謂的對象屬性解譯器就是通過弱引用的關係實現動態取值,因為這樣取值的方式是可以抽象並枚舉出來。

     interface IPropertyInterpreter

        {

        object GetPropertyValue(string propertyName);

        void SetPropertyValue(string propertyName,object value);

        }

在取值是我們可以用諸如這樣的方式

   employeePropertyInterpreter.GetPropertyValue("EmployeeName");

   employeePropertyInterpreter.GetPropertyValue("Department.DepartmentId");

   employeePropertyInterpreter.GetPropertyValue("Salary.JBGZ");

   employeePropertyInterpreter.GetPropertyValue("Salary.GWGZ");

 

Employee和Salary是一對多關聯性,但通過Salary.JBGZ(最終解釋為Salary.JBGZ.Money)可以直接存取和賦值,這樣的寫法更能表達出真實的語意。

 

employeePropertyInterpreter.SetPropertyValue("Department.DepartmentName", "開發部");

表達為:將當前員工的部門設定為開發部(前提“開發部”唯一)

 

對象屬性查詢

   public interface IQuery

    {

        List<T> GetQuery<T>(string query);

    }

提供屬性運算式查詢

employeeQuery.GetQuery<Employee>("EmployeeName='張' and Department.DepartmentName=開發部");

 

只要實現了對象屬性解譯器和對象屬性查詢器,就可以大大減輕View層的代碼編寫負擔,也為動態實現介面編程提供了可能。同時這種實現可以在不影響現有程式結構的情況下將此功能加上。如果基於Linq To SQL,EF則,對象屬性查詢器實現起來就很簡單了。

 

但是此種寫法全部是弱引用,屬性變化時引發的錯誤只能是運行時才能發現。

 

備忘:以上介面僅為描述用,具體寫法可以根據實際情況決定。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.