반사 로 인해 추상 적 인 공장 모델 의 대상 을 한 단계 더 향상 시 켰 다(지식 점:주입,반사,다 형 성,XML 파일 조작 등)
11002 단어 추상 공장 모드
namespace test
{
#region
internal static class ReflectionFactory
{
private static String _windowType;
private static String _styleType;
static ReflectionFactory()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"f:/test.xml");
XmlNode xmlNode = xmlDoc.ChildNodes[0];
_windowType = xmlNode.ChildNodes[0].ChildNodes[0].Value;
_styleType = xmlNode.ChildNodes[1].ChildNodes[0].Value;
}
public static IWindow MakeWindow()
{
return Assembly.Load("test").CreateInstance("test." + _windowType) as IWindow;
}
public static IStyle MakeStyle()
{
return Assembly.Load("test").CreateInstance("test." + _styleType) as IStyle;
}
}
#endregion
#region
internal interface IStyle
{
String ShowInfo();
}
internal interface IWindow
{
String ShowInfo();
}
#endregion
#region
internal sealed class WindowsStyle : IStyle
{
public String Description { get; private set; }
public WindowsStyle()
{
this.Description = "Windows ";
}
public String ShowInfo()
{
return this.Description;
}
}
internal sealed class MacStyle : IStyle
{
public String Description { get; private set; }
public MacStyle()
{
this.Description = "Mac ";
}
public String ShowInfo()
{
return this.Description;
}
}
#endregion
#region
internal sealed class WindowsWindow : IWindow
{
public String Description { get; private set; }
public WindowsWindow()
{
this.Description = "Windows ";
}
public String ShowInfo()
{
return this.Description;
}
}
internal sealed class MacWindow : IWindow
{
public String Description { get; private set; }
public MacWindow()
{
this.Description = "Mac ";
}
public String ShowInfo()
{
return this.Description;
}
}
#endregion
#region
internal interface IFactory
{
IWindow MakeWindow();
IStyle MakeStyle();
}
#endregion
#region
internal sealed class WindowsFactory : IFactory
{
public IWindow MakeWindow()
{
return new WindowsWindow();
}
public IStyle MakeStyle()
{
return new WindowsStyle();
}
}
internal sealed class MacFactory : IFactory
{
public IWindow MakeWindow()
{
return new MacWindow();
}
public IStyle MakeStyle()
{
return new MacStyle();
}
}
#endregion
}
주 프로그램 에서 이렇게 호출 합 니 다:
#region
IWindow window = ReflectionFactory.MakeWindow();
Console.WriteLine(" " + window.ShowInfo());
IStyle style = ReflectionFactory.MakeStyle();
Console.WriteLine(" " + style.ShowInfo());
#endregion
XML 프로필 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="utf-8" ?>
<config>
<window>MacWindow</window>
<style>MacStyle</style>
</config>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 추상 적 인 공장 모델 --- abstract factory만약 에 더욱 복잡 한 제품 관계 가 있다 면 사람 을 류 의 바다 에 빠 뜨 려 죽 이 는 리듬 이 될 것 이다.그러면 결론 적 으로 추상 적 인 공장 모델 은 많은 중간 류 를 만들어 복잡 도 를 증가 시 키 는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.