110,534
社区成员
发帖
与我相关
我的任务
分享
public IList<string> GetShipCountries()
{
OrderDAL orderDAL = new OrderDAL();
List<string> countries =new List<string>();
if (orders != null && orders.Count > 0)
{
foreach (Order order in orders)
{
if (!countries.Contains(order.ShipCountry))
{
countries.Add(order.ShipCountry);
}
}
}
else
{
countries = orderDAL.GetShipCountries();
}
return countries;
}
public interface IMobileStorage
{
void Read();
void Write();
}
--------------存储设备------------
public class FlashDisk : IMobileStorage
{
public void Read() { Console.WriteLine("闪存正在读..."); Console.WriteLine("完毕!"); }
public void Write() { Console.WriteLine("闪存正在写..."); Console.WriteLine("完毕!"); }
}
public class MobileHardDisk:IMobileStorage
{
public void Read() { Console.WriteLine("移动硬盘正在读..."); Console.WriteLine("完毕!"); }
public void Write() { Console.WriteLine("移动硬盘正在写..."); Console.WriteLine("完毕!"); }
}
---------------电脑处理插入进来的存储设备
public class Computer
{
private IMobileStorage _USBStorage;
public IMobileStorage USBStorage
{
get { return _USBStorage; }
set { _USBStorage = value; }
}
public void ReadData() { this.USBStorage.Read(); }
public void WriteData() { this.USBStorage.Write(); }
}
---------当新的设备方法名与接口定义的不一样的情况
public class NewStorage
{
public void Rd() { Console.WriteLine("新的存储设备正在读..."); Console.WriteLine("完毕!"); }
public void Wt() { Console.WriteLine("新的存储设备正在写..."); Console.WriteLine("完毕!"); }
}
//通过“适配器”转换成一样的方法名
public class StorageAdapter : IMobileStorage
{
private NewStorage _NewMobileStorage;
public NewStorage NewMobileStorage
{
get { return _NewMobileStorage; }
set { _NewMobileStorage = value; }
}
public void Read()
{
this.NewMobileStorage.Rd();
}
public void Write()
{
this.NewMobileStorage.Wt();
}
}
实现
static void Main(string[] args)
{
//多态性,把各种移动存储设备都看做 IMobileStorage,符合面向接口编程的思想
Computer computer = new Computer();
IMobileStorage flashDisk = new FlashDisk();
IMobileStorage hardDisk = new MobileHardDisk();
//插入闪存
computer.USBStorage = flashDisk;
computer.WriteData();
//插入移动硬盘
computer.USBStorage = hardDisk;
computer.ReadData();
computer.WriteData();
Console.WriteLine("==========================");
//新的设备由于方法名不一样,所以通过一个“适配器”来转化
StorageAdapter adapter = new StorageAdapter();
adapter.NewMobileStorage = new NewStorage();
computer.USBStorage = adapter;
computer.ReadData();
computer.WriteData();
Console.Read();
}
interface IYouYong
{
void Method();
}
class Person:IYouYong
{
void Method()
{
}
}
然后我们可以这样去定义个接口变量【用该接口的实现类(这里就是Person)进行初始化】
IYouYong subject=new Person();
subject.Method();