日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式(1)

發(fā)布時間:2023/12/9 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、?C# 面向?qū)ο蟪绦蛟O(shè)計復(fù)習

??點擊http://files.cnblogs.com/zhenyulu/CSharp.rar下載,內(nèi)容包括:

??字段與屬性.cs
??屬性、方法作用范圍.cs
??一加到一百.cs
??使用接口排序(2).cs
??使用接口排序(1).cs
??求質(zhì)數(shù).cs
??冒泡法排序.cs
??九九表.cs
??靜態(tài)與非靜態(tài).cs
??構(gòu)造函數(shù).cs
??方法重載.cs
??多態(tài)性.cs
??遞歸求階乘.cs
??打印三角形.cs
??傳值調(diào)用與引用調(diào)用.cs

?

二、?設(shè)計模式舉例

在設(shè)計模式中有一種模式叫Builder模式,其原理如下:

我們可以將Builder理解成電飯鍋,給這個Builder放進去米和水,經(jīng)過Builder的Build后,我們就可以取出香噴噴的米飯了。
C#中有一個類叫StringBuilder,輸入必要的信息后,就可以取出對應(yīng)的String。其使用方法如下:

using?System;
using?System.Text;

class?Exam
{
?
public?static?void?Main()
?
{
??StringBuilder?sb?
=?new?StringBuilder();
??sb.Append(
'a',2);
??sb.Append(
'b',3);
??sb.Append(
'c',4);
??Console.WriteLine(sb.ToString());?
//打印出?aabbbcccc
??sb.Remove(0,?sb.Length);?//清除sb中的所有信息
?}

}

程序執(zhí)行結(jié)果為: aabbbcccc
請使用StringBuilder對以下打印三角型的程序進行改寫,寫出新程序。

using?System;
public?class?Exam
{
?
public?static?void?Main()
?
{
??Console.Write(
"請輸入行數(shù):");
??
int?lines?=?int.Parse(Console.ReadLine());
??Console.WriteLine(
"");
??
for(int?i=1;?i<=lines?;?i++)
??
{
???
for(int?k=1;?k<=?lines-i;?k++)
????Console.Write(
"?");
???
for(int?j=1;?j<=i*2-1;?j++)
????Console.Write(
"*");
???Console.WriteLine(
"");
??}

}

}

答:

using?System;
using?System.Text;
class?Exam
{
?
public?static?void?Main()
?
{
??Console.Write(
"請輸入行數(shù):");
??
int?lines?=?int.Parse(Console.ReadLine());
??Console.WriteLine(
"");

??StringBuilder?sb?
=?new?StringBuilder();

??
for(int?i=1;?i<=lines?;?i++)
??
{
???sb.Append(
'?',?lines-i);
???sb.Append(
'*',?i*2-1);
???Console.WriteLine(sb.ToString());
???sb.Remove(
0,?sb.Length);
??}

?}

}

?

三、?先有雞還是先有蛋?

到底是先有雞還是先有蛋?看下面的代碼:

using?System;

class?Client
{
???
public?static?void?Main?()
???
{
??????Base?b?
=?new?Base();
??????Derived?d?
=?new?Derived();
??????b.d?
=?d;
??????Console.WriteLine(b.d.m);??????
???}

}


class?Base
{
???
public?int?n?=?9;
???
public?Derived?d;
}


class?Derived?:?Base
{
???
public?int?m?=?10;???
}

Derived繼承自Base,可以說沒有Base就沒有Derived,可Base里面有一個成員是Derived類型。到底是先有雞還是先有蛋?這個程序可以正常編譯執(zhí)行并打印結(jié)果10。

?

四、?大瓶子套小瓶子還是小瓶子套大瓶子?

另外一個例子:

using?System;

class?Client
{
???
public?static?void?Main?()
???
{
??????A?a?
=?new?A();
??????B?b?
=?new?B();
??????a.b?
=?b;
??????b.a?
=?a;
???}

}


class?A
{
???
public?B?b;
}


class?B
{
???
public?A?a;?
}

上面的代碼似乎描述了"a包含b,b包含a"的關(guān)系,到底是大瓶子套小瓶子還是小瓶子套大瓶子呢?

?

五、?.net本質(zhì)

關(guān)于"先有雞還是先有蛋"的程序,系統(tǒng)運行后,內(nèi)存結(jié)構(gòu)如下:
?

由圖中可以看出,根本不存在雞與蛋的問題,而是型與值的問題以及指針引用的問題。

關(guān)于"大瓶子套小瓶子還是小瓶子套大瓶子"問題,系統(tǒng)運行后,內(nèi)存結(jié)構(gòu)如下:


?
由于是指針引用,所以也無所謂大瓶子還是小瓶子了。

關(guān)于更多內(nèi)容可以參考《.NET本質(zhì)論 第1卷:公共語言運行庫》。



參考文獻:
閻宏,《Java與模式》,電子工業(yè)出版社
[美]James W. Cooper,《C#設(shè)計模式》,電子工業(yè)出版社
[美]Alan Shalloway? James R. Trott,《Design Patterns Explained》,中國電力出版社
[美]Robert C. Martin,《敏捷軟件開發(fā)-原則、模式與實踐》,清華大學出版社
[美]Don Box, Chris Sells,《.NET本質(zhì)論 第1卷:公共語言運行庫》,中國電力出版社

轉(zhuǎn)載于:https://www.cnblogs.com/zhouxiancai0128/archive/2006/10/20/534765.html

總結(jié)

以上是生活随笔為你收集整理的设计模式(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。