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();
            }
        }
    }
  • 相关阅读:
    【5】TensorFlow光速入门-图片分类完整代码
    【4】TensorFlow光速入门-保存模型及加载模型并使用
    科研数据库结构
    高并发请求的缓存设计策略
    iOS-KVC的原理
    iOS-KVO的原理
    Kafka too many open files问题解决
    VLOOKUP函数-Excel
    arcgis sql 字符串替换
    ArcGIS矢量转栅格再发布切片服务,还是直接发布切片服务?有何区别?
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2651480.html
Copyright © 2011-2022 走看看