zoukankan      html  css  js  c++  java
  • 设计模式学习笔记——工厂方法模式(Factory Method)

    1.特点:一般先用工厂方法解决对象创建问题。

    2.概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

    3.类图:

    4.程序实现:

    /// <summary>
        /// 抽象工厂,声明了一个创建Product的方法
        /// </summary>
        public abstract class Creator
        {
            /// <summary>
            /// 该方法用来返回Product产品
            /// </summary>
            /// <returns></returns>
            public abstract Product CreateProduct();
        }
    
        /// <summary>
        /// 具体产工厂,产品类 A 的创建者,继承自抽象工厂Creator
        /// </summary>
        public class ProductACreator : Creator
        {
            public override Product CreateProduct()
            {
                return new ConcreteProductA();
            }
        }
    
        /// <summary>
        /// 具体产工厂,产品类 B 的创建者,继承自抽象工厂Creator
        /// </summary>
        public class ProductBCreator : Creator
        {
            public ProductBCreator() { }
    
            public override Product CreateProduct()
            {
                return new ConcreteProductB();
            }
        }
    
        /// <summary>
        /// 抽象产品,定义工厂方法中所创建的对象
        /// </summary>
        public abstract class Product
        {
            public Product()
            { }
    
            public abstract void Opration();
        }
    
        /// <summary>
        /// 具体产品A,继承自Product
        /// </summary>
        public class ConcreteProductA : Product
        {
            public ConcreteProductA() { }
    
            public override void Opration()
            {
                // This is product A
            }
        }
    
        /// <summary>
        /// 具体产品B,继承自Product
        /// </summary>
        public class ConcreteProductB : Product
        {
            public ConcreteProductB() { }
    
            public override void Opration()
            {
                // This is product B
            }
        }
    

      

  • 相关阅读:
    grid与oracle用户下oracle程序权限不一致导致无法连接ASM问题
    错误ORA-29760: instance_number parameter not specified的解决办法
    window phone webclient xml 乱码解决方法
    谈谈layout-weight
    状态栏更改颜色
    android 顶部导航栏
    android 布局抽取优化
    Kotlin版HelloWorld
    浅谈synchronized作用
    android获取Tomcat的JSON数据
  • 原文地址:https://www.cnblogs.com/ice-baili/p/4729072.html
Copyright © 2011-2022 走看看