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();
            }
        }
    }
  • 相关阅读:
    时间日期date/cal
    chown命令
    su命令
    which命令和bin目录
    python基础之文件操作
    python之模块之shutil模块
    python基础之面向对象01
    python基础之面向对象02
    python基础之map/reduce/filter/sorted
    python基础之模块之序列化
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2651480.html
Copyright © 2011-2022 走看看