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();
            }
        }
    }
  • 相关阅读:
    ‘内部系统’怎么测试?两年测试的总结与反思
    微信公众号支付 -- 笔记
    数组处理
    String操作
    number 处理
    date 处理
    type检查
    全选全不选,返回字符串长度,汉字计数为2,获取url中的参数 ,函数防抖,函数节流
    关于移动端兼容BUG问题收集及处理
    nginx 1.6.0 配置文件服务器下载
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2651480.html
Copyright © 2011-2022 走看看