在上一篇《关于原则、模式、框架的概念梳理》中,我提到最近在学习一些基础理论,例如一些简单的编程原则,设计模式等。那么本文就来谈谈我对于控制反转这个概念的理解。因为纯粹是个人学习的总结与理解,如有不足之处,欢迎拍砖,加以指正。
本文将涉及到的概念
单一职责原则
控制反转原则
依赖倒置原则
静态工厂模式
抽象工厂模式
依赖注入模式(方法注入)
思考了一下,总觉得直接一上来就用下定义的方式来说明上面的概念会显得皱皱巴巴,麻麻赖赖,一点都不圆润,所以我想通过最近 与房子打交道的经历 来把上述的概念盘一下,不知效果会如何...🙄
对于装修的思考
其实我买的是精装房 😆
但这并不影响我对装修的思考,我甚至在买房之前就思考了一些和装修相关的事情,那么接下来我将用代码告诉你,在买房之前我都想了些什么鬼...
假如我买了毛坯房
那么这意味着我将得自己装修,也就是需要去找各种装修工人,嗯...我的自述大概是这样:
一位 *苦逼* 毛坯房业主的装修独白
那么对应的代码应该就是这样的:
///
/// Tightly coupled class
///
public class RoughcastHost
{
public RoughcastHost()
{
Console.WriteLine("I'm the host of roughcast house...");
}
private void BuyARoughcastHouse()
{
Console.WriteLine("I bought a roughcast house...");
}
private void Decorate()
{
Console.WriteLine("I want to decorate my house...");
var hardwareWorker = FindHardwareWorker();
hardwareWorker.Decorate();
var floorFinisher = FindFloorFinisher();
floorFinisher.Decorate();
var kitchenAndBathWorker = FindKitchenAndBathWorker();
kitchenAndBathWorker.Decorate();
var paperhanger = FindPaperhanger();
paperhanger.Decorate();
var painter = FindPainter();
painter.Decorate();
Console.WriteLine("Decorate house done...");
}
public void ToLiveInNewHouse()
{
BuyARoughcastHouse();
Decorate();
Console.WriteLine("Now I can live in new house...");
}
private HardwareWorker FindHardwareWorker()
{
Console.WriteLine("Find HardwareWorker...");
return new HardwareWorker();
}
private KitchenAndBathWorker FindKitchenAndBathWorker()
{
Console.WriteLine("Find KitchenAndBathWorker..."