Что вы называете дизайном, где конструктор объекта отвечает за все / любые последующие действия. Использование этого класса включает в себя просто создание экземпляра, и тогда все это запускается и забывается.
Глупый пример:
public class Order
{
public Order(int ammount,Product type)
{
Ammount = ammount;
Namespace.OrderManager.RegisterNewOrder(this);
Namespace.WarehouseManager.Substract(this);
Namespace.OrderManager.Invoice(this);
Namespace.DeliveryManager.Deliver(this);
.. well, you get the point;
}
// Called back later from DeliveryManager
public void OrderHasBeenDelivered()
{
//save some data to the DB, or notify the UI
}
// Called back later from OrderManager
public void OrderHasBeenCanceled()
{
Namespace.DeliveryManager.CancelDelivery(this);
}
}
... использование класса Order:
public void CreateOrder_click(object sender, EventArgs e)
{
new Order(50, CDs);
new Order(10, DVDs);
new Order(10, DVDs);
}
Редактировать:
Что ж, разница между использованием этого и простого статического метода заключается в том, что вновь созданный объект Order будет использоваться во многих местах, но не той функцией / потоком / объектом, которая его создала.
Я просто создаю объект заказа, он регистрируется в OrderManager, а затем OrderManager закрывает заказ позднее. Я не выбрасываю объект как таковой, он будет продолжать существовать в приложении.