zoukankan      html  css  js  c++  java
  • 设计模式之抽象工厂模式代码示例

    using System;
    
    namespace AbstractFactoryFunc{
    
        public abstract class AbstractProductA{
            public abstract void ProductAMethod();
        }
    
        public class ProductA1 : AbstractProductA{
            public override void ProductAMethod(){
                Console.Write(this.ToString() + " : Method!");
                Console.Read();
            }
        }
    
        public class ProductA2 : AbstractProductA{
            public override void ProductAMethod(){
                Console.Write(this.ToString() + " : Method!");
                Console.Read();
            }
        }
        
        public abstract class AbstractProductB{
            public abstract void ProductBMethod();
        }    
    
        public class ProductB1 : AbstractProductB{
            public override void ProductBMethod(){
                Console.Write(this.ToString() + " : Method!");
                Console.Read();
            }
        }
    
        public class ProductB2 : AbstractProductB{
            public override void ProductBMethod(){
                Console.Write(this.ToString() + " : Method!");
                Console.Read();
            }
        }
    
        public abstract class AbstractFactory{
            public abstract AbstractProductA CreateProductA();
            public abstract AbstractProductB CreateProductB();
        }    
    
        public class ConcreteFactory1 : AbstractFactory{
            public override AbstractProductA CreateProductA()
            {
                return new ProductA1();
            }
            public override AbstractProductB CreateProductB()
            {
                return new ProductB1();
            }
        }
    
        public class ConcreteFactory2 : AbstractFactory{
            public override AbstractProductA CreateProductA()
            {
                return new ProductA2();
            }
            public override AbstractProductB CreateProductB()
            {
                return new ProductB2();
            }
        }
    
        public class Client{
    
            public AbstractProductA abstractProductA;
            public AbstractProductB abstractProductB;
    
            public Client(AbstractFactory abstractFactory){
                abstractProductA = abstractFactory.CreateProductA();
                abstractProductB = abstractFactory.CreateProductB();
            }
    
            public void Run()
            {
                abstractProductA.ProductAMethod();
                abstractProductB.ProductBMethod();
            }
        }
    
        public class EntryPoint{
            public static void Main(string[] args){
                AbstractFactory factory1 = new ConcreteFactory1();
                Client myClient = new Client(factory1);
                myClient.Run();
                Console.Read();
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    jquery datatable[表格处理]之AdminLTE
    kdevtmpfsi挖矿病毒导致服务器cpu高负荷运行
    Python3 '%Y-%m-%dT%H:%M:%S.000Z' 时间格式转换
    python-生成动态路由轨迹图(scapy模块)
    Python之XlsxWriter模块(数据报表)
    python之web服务质量探测(pycurl模块)
    Django-图片验证码
    最简容器化动手小实践——再战flappybird
    基于OAS设计可扩展OpenAPI
    Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2651480.html
Copyright © 2011-2022 走看看