zoukankan      html  css  js  c++  java
  • 简单工厂模式

    一,概述
      在软件开发的过程中经常会有这种需求,为了达到不同的效果和目的,经常变换类对象,而这些类所要实现的接口对象相对稳定,这种情况就要考虑到简单工厂模式
    二,简单工厂模式的组成:
    1.工厂类:负责根据不同的逻辑产生不同的对象实例
    2.抽象产品类:一般是具体产品类要继承的父类或者是要实现的接口
    3.具体产品类:继承了父类的子类或者是实现了接口的子类,是工厂类要创建的类
    三,实例解说
     描述:公路的收费系统要根据不同的车型收取不同的费用
    1.定义抽象产品接口:
       public interface Icalcute{
       public double calcuteresutl();
    }
    2.具体产品类实现了抽象产品接口
    //车型为car
     public class car:Icalcute{
      public double calcuteresult()
    {
    return 33;
    }
    }
    //车型为bus
      public class bus:Icalcute{
      public double calcuteresult()
    {
    return 100;
    }
    }
    ........可以有多个车型类
    3.工厂类,根据不同的条件生成不同的车型类
    public calss factory{
    ICalcute cal;
    public Calcute GetTypeobject(string type)
    {
    switch(type)
    {
     
      case "car":
      cal=new car();
      break;
      case "bus":
      cal=new bus();
      break;
      ...........
    }
    return cal;  
    }
    }
    客户端代码
    public void main()
    {
     ICalcute cal;
     factory fac=new factory();
     cal=fac.GetTypeobject("car");
     double fee=cal.calcuteresult();
    }
    缺点:违背了开发-封闭原则,如果要增加一个jeep车的收费,要增加一个jeep类,另外还要修改factory工厂类中的代码,增加一个case分支
  • 相关阅读:
    bzoj4563: [Haoi2016]放棋子(错排+高精)
    bzoj1089 [SCOI2003]严格n元树(dp+高精)
    9.15NOIP模拟题
    洛谷 P2010 回文日期 题解
    洛谷 P1147 连续自然数和 题解
    洛谷 P1152 欢乐的跳 题解
    信息学奥赛一本通 高手训练1 统计方案数
    想学习找不到好的博客?看这里>>
    信息学奥赛一本通 高手训练1 游戏通关
    洛谷 P3398 仓鼠找sugar 题解
  • 原文地址:https://www.cnblogs.com/ldqwyl/p/2031604.html
Copyright © 2011-2022 走看看