程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 《Java是如何快速煮成C#的?》(一):相似的方法(2)

《Java是如何快速煮成C#的?》(一):相似的方法(2)

編輯:C#入門知識

在上篇《 Java是如何快速煮成C#的?》(一):相似的方法 》中,我們開啟了C#與Java中的話題之一:相似的方法。本節我們再舉例說明,到底有多相似。

我們用一個簡單的工廠模式的例子說明,順便復習下設計模式,呵呵。

首先邀月得補充一下:

1、語言對比:Java的文件名必須與類名匹配。在Java中,文件名必須遵循類的名稱。在C#中,雖然通常如此,但不是必需的。在C#中,可以有兩個class在一個文件中,並且從C#2.0開始,可能有一個Class跨越多個文件。

2、簡單工廠(Simple Factory)模式
Simple Factory模式根據提供給它的數據,返回幾個可能類中的一個類的實例。通常它返回的類都有一個公共的父類和公共的方法。
好了,我們看一個C#/Java的類圖

 

邀月工作室

邀月工作室

就類圖本身而言,除了String與string的大小寫之外,並無區別。兩個圖均用Powerdesigner所畫,只是依據模板分別為c#2.0和Java。

基類:Namer

派生類:FirstFirst和LastFirst均繼承Namer

NameFactory實現了Namer的Create方法,在本例中為getName()。

代碼對比如下:
Namer(C#):

view plaincopy to clipboardprint?
using System;  
namespace NameFactory  
{  
    /// <summary>  
    /// Summary description for Namer.  
    /// </summary>  
    //Base class for getting split names  
    public class Namer  
    {  
        //parts stored here  
        protected string frName, lName;  
        //return first name  
        public string getFrname()  
        {  
            return frName;  
        }  
        //return last name  
        public string getLname()  
        {  
            return lName;  
        }  
    }  

using System;
namespace NameFactory
{
    /// <summary>
    /// Summary description for Namer.
    /// </summary>
    //Base class for getting split names
    public class Namer
    {
        //parts stored here
        protected string frName, lName;
        //return first name
        public string getFrname()
        {
            return frName;
        }
        //return last name
        public string getLname()
        {
            return lName;
        }
    }
}

Namer(Java):

view plaincopy to clipboardprint?
package com.factory.SimpleFactory;  
public class Namer {  
     protected String frName, lName;  
     //return first name  
     public String getFrname()  
     {  
         return frName;  
     }  
     //return last name  
     public String getLname()  
     {  
         return lName;  
     }  

package com.factory.SimpleFactory;
public class Namer {
     protected String frName, lName;
     //return first name
     public String getFrname()
     {
         return frName;
     }
     //return last name
     public String getLname()
     {
         return lName;
     }
}

FirstFirst(C#):

view plaincopy to clipboardprint?
using System;  
namespace NameFactory  
{  
    /// <summary>  
    /// Summary description for FirstFirst.  
    /// </summary>  
    public class FirstFirst : Namer  
    {  
        public FirstFirst(string name)  
        {  
            int i = name.IndexOf(" ");  
            if (i > 0)  
            {  
                frName = name.Substring(0, i).Trim();  
                lName = name.Substring(i + 1).Trim();  
            }  
            else 
            {  
                lName = name;  
                frName = "";  
            }  
        }  
    }  

using System;
namespace NameFactory
{
    /// <summary>
    /// Summary description for FirstFirst.
    /// </summary>
    public class FirstFirst : Namer
    {
        public FirstFirst(string name)
        {
            int i = name.IndexOf(" ");
            if (i > 0)
            {
                frName = name.Substring(0, i).Trim();
            &nb

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved