Ochkasty_Dino

ООП для .Net абстактная фабрика

Sep 20th, 2020
963
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace TuningFac
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.  
  14.             Tuning TAt1 = new Tuning(new TA1());
  15.             TAt1.Eng();
  16.             TAt1.Bod();
  17.             TAt1.Col();
  18.  
  19.             Tuning TAt2 = new Tuning(new TA2());
  20.             TAt2.Eng();
  21.             TAt2.Bod();
  22.             TAt2.Col();
  23.  
  24.             Tuning TAt3 = new Tuning(new TA3());
  25.             TAt3.Eng();
  26.             TAt3.Bod();
  27.             TAt3.Col();
  28.         }
  29.  
  30.  
  31.         //абстрактный класс - двигатель
  32.         abstract class Engine
  33.         {
  34.             public abstract void Start();
  35.         }
  36.         //абстрактный класс - кузов
  37.         abstract class Body
  38.         {
  39.             public abstract void Show();
  40.         }
  41.         //абстрактный класс - развал/схождение
  42.         abstract class Collaps
  43.         {
  44.             public abstract void Do();
  45.         }
  46.  
  47.  
  48.         //класс - замена стандартных деталей двигателя на улучшенные
  49.         class Kovka : Engine
  50.         {
  51.             public override void Start()
  52.             {
  53.                 Console.WriteLine("Замена стандартных деталей двигателя на модернизированные");
  54.             }
  55.         }
  56.         //класс - удаления катализатора с чип-тюнингом двигателя
  57.         class Cheap : Engine
  58.         {
  59.             public override void Start()
  60.             {
  61.                 Console.WriteLine("Удаления катализатора с чип-тюнингом двигателя");
  62.             }
  63.         }
  64.         //класс - удаления катализатора с чип-тюнингом двигателя только
  65.         //для иномарок
  66.         class CheapIn : Engine
  67.         {
  68.             public override void Start()
  69.             {
  70.                 Console.WriteLine("Удаления катализатора с чип-тюнингом двигателя только для иномарок");
  71.             }
  72.         }
  73.  
  74.  
  75.         //класс - оклейка пленкой
  76.         class Film : Body
  77.         {
  78.             public override void Show()
  79.             {
  80.                 Console.WriteLine("Оклейка пленкой");
  81.             }
  82.         }
  83.         //класс - полный перекрас кузова
  84.         class PaintFull : Body
  85.         {
  86.             public override void Show()
  87.             {
  88.                 Console.WriteLine("Полный перекрас кузова");
  89.             }
  90.         }
  91.        
  92.         //класс - детальный перекрас кузова
  93.         class PaintDet : Body
  94.         {
  95.             public override void Show()
  96.             {
  97.                 Console.WriteLine("Детальный перекрас кузова");
  98.             }
  99.         }
  100.  
  101.         //класс - обычный развал
  102.         class Razval : Collaps
  103.         {
  104.             public override void Do()
  105.             {
  106.                 Console.WriteLine("Сделать обычный развал");
  107.             }
  108.         }
  109.         //класс - мин и плюс разв
  110.         class RazvPM : Collaps
  111.         {
  112.             public override void Do()
  113.             {
  114.                 Console.WriteLine("Сделать минусовой и плюсовой развал");
  115.             }
  116.         }
  117.         //класс - оба вида развала
  118.         class RazvTwo : Collaps
  119.         {
  120.             public override void Do()
  121.             {
  122.                 Console.WriteLine("Сделать оба вида развала");
  123.             }
  124.         }
  125.  
  126.  
  127.         //абстрактный класс фабрики
  128.         abstract class TuningFac
  129.         {
  130.             public abstract Engine CreateEngine();
  131.             public abstract Body CreateBody();
  132.             public abstract Collaps CreateCollaps();
  133.         }
  134.  
  135.        
  136.         class TA1 : TuningFac
  137.         {
  138.             public override Engine CreateEngine()
  139.             {
  140.                 return new Kovka();                
  141.             }
  142.             public override Body CreateBody()
  143.             {
  144.                 return new PaintFull();
  145.             }
  146.             public override Collaps CreateCollaps()
  147.             {
  148.                 return new Razval();
  149.             }
  150.         }
  151.  
  152.         class TA2 : TuningFac
  153.         {
  154.             public override Engine CreateEngine()
  155.             {
  156.                 return new Cheap();
  157.             }
  158.             public override Body CreateBody()
  159.             {
  160.                 return new PaintDet();
  161.             }
  162.             public override Collaps CreateCollaps()
  163.             {
  164.                 return new RazvTwo();
  165.             }
  166.         }
  167.  
  168.         class TA3 : TuningFac
  169.         {
  170.             public override Engine CreateEngine()
  171.             {
  172.                 return new CheapIn();
  173.             }
  174.             public override Body CreateBody()
  175.             {
  176.                 return new Film();
  177.             }
  178.             public override Collaps CreateCollaps()
  179.             {
  180.                 return new RazvPM();
  181.             }
  182.         }
  183.  
  184.         class Tuning
  185.         {
  186.             private Engine engine;
  187.             private Body body;
  188.             private Collaps collaps;
  189.  
  190.             public Tuning(TuningFac factory)
  191.             {
  192.                 engine = factory.CreateEngine();
  193.                 body = factory.CreateBody();
  194.                 collaps = factory.CreateCollaps();
  195.             }
  196.  
  197.             public void Eng()
  198.             {
  199.                 engine.Start();
  200.             }
  201.             public void Bod()
  202.             {
  203.                 body.Show();
  204.             }
  205.             public void Col()
  206.             {
  207.                 collaps.Do();
  208.             }
  209.         }
  210.     }
  211. }
  212.  
RAW Paste Data