zoukankan      html  css  js  c++  java
  • CSharp设计模式读书笔记(2):工厂方法模式(学习难度:★★☆☆☆,使用频率:★★★★★)

    工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。

    模式角色与结构:

    工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的接口,将实际创建工作推迟到子类中。

    示例代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace CSharp.DesignPattern.FactoryMethodPattern
    {
        class Program
        {
            static void Main(string[] args)
            {
                ICreator footballCreator = new FootballCreator(); // build factory
                ICreator baseketballCreator = new BaseketballCreator(); // build factory
    
                IAthlete footballAthlete = footballCreator.Create(); // build product
                IAthlete basketballAthlete = baseketballCreator.Create(); // build product
    
                footballAthlete.Run();
                footballAthlete.Jump();
    
                basketballAthlete.Run();
                basketballAthlete.Jump();
    
                Console.ReadLine();
            }
        }
    
        // Product
        interface IAthlete 
        {
            void Run();
            void Jump();
        }
    
        class FootballAthlete : IAthlete
        {
            public void Run()
            {
                Console.WriteLine("FootballAthlete Run...");
            }
    
            public void Jump()
            {
                Console.WriteLine("FootballAthlete Jump...");
            }
        }
    
        class BaseketballAthlete : IAthlete
        {
            public void Run()
            {
                Console.WriteLine("BaseketballAthlete Run...");
            }
    
            public void Jump()
            {
                Console.WriteLine("BaseketballAthlete Jump...");
            }
        }
    
        // Factory
        interface ICreator 
        {
            IAthlete Create();
        }
    
        // Concrete Factory
        class BaseketballCreator : ICreator 
        {
            public IAthlete Create()
            {
                return new BaseketballAthlete();
            }
        }
    
        // Concrete Factory
        class FootballCreator : ICreator 
        {
            public IAthlete Create()
            {
                return new FootballAthlete();
            }
        }
    }
  • 相关阅读:
    链表逆序输出 ---九度1511
    java 通过ssh连接linux服务器的测试代码
    C/C++时间函数总结
    C,C++,windows api, linux api 操作文件总结
    基于大数据计算思想的分布式数据库
    手机定位的方式
    矩阵取数问题
    回文字符串
    linux shell重定向总结
    apache flink 入门
  • 原文地址:https://www.cnblogs.com/thlzhf/p/2791525.html
Copyright © 2011-2022 走看看