반사 로 인해 추상 적 인 공장 모델 의 대상 을 한 단계 더 향상 시 켰 다(지식 점:주입,반사,다 형 성,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에 따라 라이센스가 부여됩니다.