Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TuningFac
- {
- class Program
- {
- static void Main(string[] args)
- {
- Tuning TAt1 = new Tuning(new TA1());
- TAt1.Eng();
- TAt1.Bod();
- TAt1.Col();
- Tuning TAt2 = new Tuning(new TA2());
- TAt2.Eng();
- TAt2.Bod();
- TAt2.Col();
- Tuning TAt3 = new Tuning(new TA3());
- TAt3.Eng();
- TAt3.Bod();
- TAt3.Col();
- }
- //абстрактный класс - двигатель
- abstract class Engine
- {
- public abstract void Start();
- }
- //абстрактный класс - кузов
- abstract class Body
- {
- public abstract void Show();
- }
- //абстрактный класс - развал/схождение
- abstract class Collaps
- {
- public abstract void Do();
- }
- //класс - замена стандартных деталей двигателя на улучшенные
- class Kovka : Engine
- {
- public override void Start()
- {
- Console.WriteLine("Замена стандартных деталей двигателя на модернизированные");
- }
- }
- //класс - удаления катализатора с чип-тюнингом двигателя
- class Cheap : Engine
- {
- public override void Start()
- {
- Console.WriteLine("Удаления катализатора с чип-тюнингом двигателя");
- }
- }
- //класс - удаления катализатора с чип-тюнингом двигателя только
- //для иномарок
- class CheapIn : Engine
- {
- public override void Start()
- {
- Console.WriteLine("Удаления катализатора с чип-тюнингом двигателя только для иномарок");
- }
- }
- //класс - оклейка пленкой
- class Film : Body
- {
- public override void Show()
- {
- Console.WriteLine("Оклейка пленкой");
- }
- }
- //класс - полный перекрас кузова
- class PaintFull : Body
- {
- public override void Show()
- {
- Console.WriteLine("Полный перекрас кузова");
- }
- }
- //класс - детальный перекрас кузова
- class PaintDet : Body
- {
- public override void Show()
- {
- Console.WriteLine("Детальный перекрас кузова");
- }
- }
- //класс - обычный развал
- class Razval : Collaps
- {
- public override void Do()
- {
- Console.WriteLine("Сделать обычный развал");
- }
- }
- //класс - мин и плюс разв
- class RazvPM : Collaps
- {
- public override void Do()
- {
- Console.WriteLine("Сделать минусовой и плюсовой развал");
- }
- }
- //класс - оба вида развала
- class RazvTwo : Collaps
- {
- public override void Do()
- {
- Console.WriteLine("Сделать оба вида развала");
- }
- }
- //абстрактный класс фабрики
- abstract class TuningFac
- {
- public abstract Engine CreateEngine();
- public abstract Body CreateBody();
- public abstract Collaps CreateCollaps();
- }
- class TA1 : TuningFac
- {
- public override Engine CreateEngine()
- {
- return new Kovka();
- }
- public override Body CreateBody()
- {
- return new PaintFull();
- }
- public override Collaps CreateCollaps()
- {
- return new Razval();
- }
- }
- class TA2 : TuningFac
- {
- public override Engine CreateEngine()
- {
- return new Cheap();
- }
- public override Body CreateBody()
- {
- return new PaintDet();
- }
- public override Collaps CreateCollaps()
- {
- return new RazvTwo();
- }
- }
- class TA3 : TuningFac
- {
- public override Engine CreateEngine()
- {
- return new CheapIn();
- }
- public override Body CreateBody()
- {
- return new Film();
- }
- public override Collaps CreateCollaps()
- {
- return new RazvPM();
- }
- }
- class Tuning
- {
- private Engine engine;
- private Body body;
- private Collaps collaps;
- public Tuning(TuningFac factory)
- {
- engine = factory.CreateEngine();
- body = factory.CreateBody();
- collaps = factory.CreateCollaps();
- }
- public void Eng()
- {
- engine.Start();
- }
- public void Bod()
- {
- body.Show();
- }
- public void Col()
- {
- collaps.Do();
- }
- }
- }
- }
RAW Paste Data