Text version of the video
http://csharp-video-tutorials.blogspo...
Slides
http://csharp-video-tutorials.blogspo...
Design Patterns Tutorial playlist
https://www.youtube.com/playlist?list...
Design Patterns Text articles and slides
http://csharp-video-tutorials.blogspo...
All Dot Net and SQL Server Tutorials in English
https://www.youtube.com/user/kudvenka...
All Dot Net and SQL Server Tutorials in Arabic
https://www.youtube.com/c/KudvenkatAr...
In this session we will learn
1. What is Factory Design Pattern
2. Implementation Guidelines
3. Simple factory implementation
What is Factory Design Pattern : Gang of Four Definition
Define an interface for creating an object, but let subclasses decide which class to instantiate. The Factory method lets a class defer instantiation it uses to subclasses
Factory pattern is one of the most used design patterns in real world applications. Factory pattern creates object without exposing the creation logic to the client and refer to newly created object using a common interface
Implementation Guidelines
We need to choose Factory Pattern when
1. The Object needs to be extended to subclasses
2. The Classes doesn’t know what exact sub-classes it has to create
3. The Product implementation tend to change over time and the Client remains unchanged
Simple Factory Example : Business Requirement
Differentiate employees as permanent and contract and segregate their pay scales as well as bonus based on their employee types
We can address the above requirement with the below implementations
1. Implement without Factory Pattern
2. Use a Simple Factory
3. Enhance Simple factory to Factory Method Pattern
We will be working on the Employee Portal that we used in the Singleton tutorials. Please refer to them before proceeding
Prerequisite steps
1. Enhance the DB model to add Employee_Type Table
2. Add Permanent and Contract Employees as Master Data.
3. Add new columns EmployeeTypeID, Bonus, HourlyPay to Emplyee Table and add Foreign key constraint to the Emp
4. Update the Emloyee Model edmx file with the latest changes.
5. Create new BaseController and Move the Singleton Exception logic to the base controller public class BaseController : Controller { private ILog _ILog; public BaseController() { _ILog = Log.GetInstance; } protected override void OnException(ExceptionContext filterContext) { _ILog.LogException(filterContext.Exception.ToString()); filterContext.ExceptionHandled = true; this.View("Error").ExecuteResult(this.ControllerContext); } }
6. Regenerate the EmployeesController and its corresponding views
7. Comment the code in Create and Update views which accepts inputs for Bonus and HourlyPay
Solution 1: Implement without Factory Pattern
EmployeeController.cs [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,Name,JobDescription,Number,Department,HourlyPay,Bonus,EmployeeTypeID")] Employee employee) { if (ModelState.IsValid) { if (employee.EmployeeTypeID == 1) { employee.HourlyPay = 8; employee.Bonus = 10; } else if (employee.EmployeeTypeID == 2) { employee.HourlyPay = 12; employee.Bonus = 5; } db.Employees.Add(employee); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.EmployeeTypeID = new SelectList(db.Employee_Type, "Id", "EmployeeType", employee.EmployeeTypeID); return View(employee); }
The above code introduces
1. Tight coupling between Controller class and Business logic
2. For any new employee type addition, we end up modifying the controller code adding extra over heads in the development and testing process
Using a simple factory eliminates the above drawbacks.
Solution 2: Implement with Simple Factory
1. Add new Manager folder and add the below interface and classes
IEmployeeManager.cs public interface IEmployeeManager { decimal GetBonus(); decimal GetPay(); }
ContractEmployeeManager.cs public class ContractEmployeeManager : IEmployeeManager { public decimal GetBonus() { return 5; } public decimal GetPay() { return 12; } }
asp.net core docker Factory Design Pattern Introduction | |
| 371 Likes | 371 Dislikes |
| 117,775 views views | 524K followers |
| Science & Technology | Upload TimePublished on 23 Jul 2017 |
Related keywords
wcf vs web api,ado.net core,sql server management studio,webkinz,webadvisor,craigslist nj,wcf one piece,asp.net core 3,ajax players,weber grill parts,webtoon,tutorials by hugo,csharp corner,mvc design pattern,asp.net machine account,servers for minecraft,asp.net core dependency injection,ado.net tutorial,services angular,ajax ontario,asp.net mvc tutorial,asp.net cos'è,csharp assembly,tutorialspoint python,sql join,services briefcase,asp.net core web api,ajax jquery,wccftech,craigslist ny,asp.net zero,csharp foreach,server memes,sql date format,services online,chase,serverless architecture,server resume,wcf c#,server books,tutorialspoint javascript,mvcc connect,ado.net mysql,services technologies gps,ajax deadpool,server jobs,cvs,website,mvc tutorial,costco hours,wcf service application,tutorialspoint spring,serverless,wcf soap,wcf cat,cool math games,wcf test client,services & training hse colombia sas,servicestack,citibank,asp.net core identity,sql union,ajax parking,sql database,asp.net core logging,mvconnect,cunyfirst,asp.net guida,wcf nba,csharp download,wcfi foundation,csharp online,wcf authentication,tutorials near me,http://asp.net,server 2019,chernobyl,ado.net descargar,web of dreams,serverminer,ajax cleaner,ado.net visual studio 2019,webassign,ado.net vs entity framework,ado.net visual studio 2017,csharp list,sql like,asp.net mvc,asp.net core tutorial,sqlite,wcfm,ajax roster,mvc architecture,http://ado.net,asp.net core mvc,ajax soccer,server hosting,wcfi,ajax dish soap,capital one,server rack,tutorialspoint html,csharp interface,craigslist,webroot,tutorialspoint reactjs,ajax request,wcf dragon ball,asp.net core 2.2,tutorialspoint python 3,sql developer,webster,services transmission company sas,sql group by,asp.net core signalr,services manager,mvc framework,ajax paving,mvc near me,tutorialspoint spring boot,mvc map,csharp online compiler,asp.net download,sql between,ado.net c# pdf,services tag dell,wcf 2019 nba,csharp switch,ado.net ventajas y desventajas,csharpstar,wcf tutorial,tutorialspoint,ajax meaning,csharp-video-tutorials.blogspot,tutorials dojo,central park 5,csharp string format,ado.net c#,asp.net core github,server status,ajax fc,server jobs nyc,asp.net core swagger,sql formatter,credit karma,services group,server error in '/' application,services windows,asp.net core 3.0,sql injection,tutorialspoint c#,wcf ria services,calculator,ado.net entity data model,sql insert,tutorialspoint tableau,services google play apk,sqlyog,asp.net core 3 release date,sql server,server job description,tutorials by a,servicenow,webcam,mvc hours,webmd symptom,csharp array,csharp enum,ajax call,asp.net core 2. guida completa per lo sviluppatore,asp.net core,server pro,server status ffxiv,cheap flights,webcrims,asp.net core hosting,services sas,tutorialspoint java,tutorialspoint java compiler,webmd,csharp to json,college football,ado.net dataset,csharp dictionary,cnn,website builder,tutorialspoint sql,asp.net web api,server side rendering,weber grills,sql server 2017,tutorialspoint spark,mvc nj,ado.net oracle,asp.net core download,csharp to vb.net,webster bank,webstaurant,tutorialsystems,ajax post,services fms publish announcement,services.msc no abre,ajax jersey,csharp operator,asp.net core razor pages,server duties,asp.net core environment variables,csharp random,century 21,services consultores,services consulting,mvcsd,services.msc,mvcsc,ado.net pdf,asp.net core configuration,ajax marvel,sql update,asp.net tutorial,mvc medical,ado.net entity data model visual studio 2019,wcfs international curriculum,mvc2,ado.net entity data model visual studio 2017,chase online,wcf api,costco,server jobs near me,webex,sql meaning,sql tutorial,sql commands,ado.net entity framework,ajax tavern,tutorialsteacher,ajax javascript,services desk,ajax greek,csharp tutorial,mvc pattern,ado.net sql server,ado.net connection,asp.net identity,mvcu,asp.net core middleware,wcf web service,mvc webadvisor,web store,mvcc,webmail,mvci,mvctc,
Không có nhận xét nào:
Đăng nhận xét