首页 > 其他分享 >02_简单工厂模式

02_简单工厂模式

时间:2024-03-08 11:25:38浏览次数:30  
标签:02 return int void 模式 工厂 Amount Create public

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,属于工厂模式的一种。在简单工厂模式中,通过一个工厂类来负责创建对象实例,而客户端无需直接创建对象,只需要通过工厂类来获取所需的对象。

简单工厂模式包含以下几个角色:

  1. 工厂类(Factory):负责创建对象实例的类。
  2. 产品类(Product):工厂类所创建的对象实例的共同接口或父类。
  3. 具体产品类(Concrete Product):实现产品类接口的具体对象类。

 

Product

 public interface IFruit
    {
        /// <summary>
        /// 水果的数量
        /// </summary>
        double Amount { get; }
        /// <summary>
        /// 种植
        /// </summary>
        /// <param name="amount"></param>
        void Plant(int amount);
        /// <summary>
        /// 生成
        /// </summary>
        /// <param name="days"></param>
        void Grow(int days);
        /// <summary>
        /// 收获
        /// </summary>
        /// <returns></returns>
        double Harvest();
    }

 

Concrete Product

苹果

public class Apple : IFruit
    {
        public double Amount { get; private set; }

        public void Grow(int days)
        {
            Amount *= days * 0.85;
        }

        public double Harvest()
        {
            return Amount;
        }

        public void Plant(int amount)
        {
            Amount = amount;
        }
    }
View Code

香蕉

public class Banana : IFruit
    {
        public double Amount { get; private set; }

        public void Grow(int days)
        {
            Amount *= days * 2;
        }

        public double Harvest()
        {
            return Amount;
        }

        public void Plant(int amount)
        {
            Amount = amount;
        }
    }
View Code

橘子

public class Orange : IFruit
    {
        public double Amount { get; private set; }

        public void Grow(int days)
        {
            Amount *= days * 1.5;
        }

        public double Harvest()
        {
            return Amount;
        }

        public void Plant(int amount)
        {
            Amount = amount;
        }
    }
View Code

 

Factory

public class FruitFactory
    {
        public static IFruit Create(string name)
        {
            switch (name)
            {
                case "Apple":
                    return new Apple();
                case "Banana":
                    return new Banana();
                case "Orange":
                    return new Orange();
                default: 
                    return null;
            }
        }

//通过反射获取对象实例 public static IFruit Create<T>() { return (IFruit)Activator.CreateInstance(typeof(T)); } }

 

static void Main(string[] args)
        {
            var apple = FruitFactory.Create("Apple");
            var banana = FruitFactory.Create("Banana");
            var orange = FruitFactory.Create("Orange");

            apple = FruitFactory.Create<Apple>();
            banana = FruitFactory.Create<Banana>();
            orange = FruitFactory.Create<Orange>();

            apple.Plant(10);
            apple.Grow(180);
            Console.WriteLine($"苹果收获:{apple.Harvest()}") ;

            banana.Plant(10);
            banana.Grow(180);
            Console.WriteLine($"香蕉收获:{banana.Harvest()}");

            orange.Plant(10);
            orange.Grow(180);
            Console.WriteLine($"柑橘收获:{orange.Harvest()}");

            Console.ReadKey();
        }

 

标签:02,return,int,void,模式,工厂,Amount,Create,public
From: https://www.cnblogs.com/MingQiu/p/18060525

相关文章

  • 01_单例模式
    单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。在单例模式中,类会提供一个静态方法来获取其唯一实例,如果该实例不存在则会创建一个新实例,否则返回已有的实例。publicsealedclassCounter{publicCounter(){......
  • 前端设计模式大全
    1.工厂模式工厂模式(FactoryPattern):将对象的创建和使用分离,由工厂类负责创建对象并返回。在前端开发中,可以使用工厂模式来动态创建组件。前端中的工厂模式是一种创建对象的设计模式,它可以让我们封装创建对象的细节,我们使用工厂方法而不是直接调用new关键字来创建对象,使得......
  • Java工具 - 坐标系WGS-84,GCJ-02,BD-09之间的相互转换
    importjava.util.ArrayList;importjava.util.List;/***地图坐标转换*/publicclassGpsCoordinateUtils{privatestaticfinaldoublePI=3.1415926535897932384626433832795;//privatestaticfinaldoublePI=3.14159265358979324;privatestaticf......
  • 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告
     首页政策法规考试介绍考试安排考试用书考试研究与对外交流各地联系方式2024年03月08日 丨回到首页 当前位置:首页>工作动态关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告2024-01-22 来源:中国计算机技术职业资格网关于2023年......
  • 2024年度计算机技术与软件专业技术资格(水平)考试工作计划
     首页政策法规考试介绍考试安排考试用书考试研究与对外交流各地联系方式2024年03月08日 丨回到首页 当前位置:首页>考试安排2024年度计算机技术与软件专业技术资格(水平)考试工作计划2024-03-05 来源:中国计算机技术职业资格网声明:本网(www.rua......
  • 联合省选2024游记&反思
    Day0干了啥来着,好像打了点板子,打了点摆,中间被拉去给学弟学妹拍了中考祝福视频,然后一天就过去了。其实没什么心理压力,反正进队希望不是很大。Day1进场发现右边是lcj,左边是lzx,但是他没有来,所以左边变成了wxr。开题发现其实每个题看起来都挺可做的?画了画图发现自己似乎会了......
  • Git 开源的版本控制系统-02-base usage 基本用法
    拓展阅读Subversion开源的版本控制系统入门介绍VCSGit开源的版本控制系统-01-入门使用介绍Git开源的版本控制系统-02-baseusage基本用法Git开源的版本控制系统-03-时间数据回溯Git开源的版本控制系统-04-branchmanage分支管理Git开源的版本控制系统-05-tags标签......
  • 2024天梯选拔赛(一)
    2024天梯选拔赛(一)A私人笑声#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>PII;intmain(){ios::sync_with_stdio......
  • 【专题】2023年中国奢侈品市场数字化趋势洞察报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33672原文出处:拓端数据部落公众号2022年,中国的奢侈品消费市场一直处于不断变化和挑战之中,但随着2023年的到来,中国正在全面复苏,市场也充满了机遇和想象空间。自2019年以来,奢侈品品牌一直在中国尝试本地化和数字化策略,将中国的奢侈品消费者与国内市......
  • 2023年第十四届蓝桥杯大赛软件类省赛Java大学B组真题
    2023年第十四届蓝桥杯大赛软件类省赛Java大学B组真题C.数组分割思路:因为最后要是分为2组偶数。由于偶数+偶数=偶数,奇数+奇数=偶数。那么我们的奇数个数一定要是偶数个。如果奇数个数为奇数个那直接就不行了,答案是0。如果奇数的个数是偶数的话,假设偶数n个,奇数m个。\(C_{n}^{0}+......