Unity设计模式个人总结:接口隔离原则总结:近期自学Unity引擎,学到了关于设计模式这一块,以前学习Java多次接触设计模式,也在应用的开发过程中频繁使用。
虽然开发过程中没有特意去强调使用设计模式,但设计模式的使用总是潜移默化的,现在回头再复习下设计模式具体实现,才发现自己在开发过程中自然而然的就运用到了。总之做任何事都是靠经验积累的,设计模式的出现也是靠实践总结出来的,虽然是做游戏开发,但逻辑依旧是相同的,看了几篇Blog觉得受益匪浅,在这里总结下再次学习的感悟。
interface I { public void method1(); public void method2(); public void method3(); public void method4(); public void method5(); } class A{ public void depend1(I i){ i.method1(); } public void depend2(I i){ i.method2(); } public void depend3(I i){ i.method3(); } } class B : I{ public void method1() { Debug.Log("类B实现接口I的方法1"); } public void method2() { Debug.Log("类B实现接口I的方法2"); } public void method3() { Debug.Log("类B实现接口I的方法3"); } //对于类B来说,method4和method5不是必需的,但是由于接口A中有这两个方法, //所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。 public void method4() {} public void method5() {} } class C{ public void depend1(I i){ i.method1(); } public void depend2(I i){ i.method4(); } public void depend3(I i){ i.method5(); } } class D : I{ public void method1() { Debug.Log("类D实现接口I的方法1"); } //对于类D来说,method2和method3不是必需的,但是由于接口A中有这两个方法, //所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。 public void method2() {} public void method3() {} public void method4() { Debug.Log("类D实现接口I的方法4"); } public void method5() { Debug.Log("类D实现接口I的方法5"); } } public class Client{ void Start(){ A a = new A(); Debug.Log(a.depend1(new B())); Debug.Log(a.depend2(new B())); Debug.Log(a.depend3(new B())); C c = new C(); Debug.Log(c.depend1(new D())); Debug.Log(c.depend2(new D())); Debug.Log(c.depend3(new D())); } }
interface I1 { public void method1(); } interface I2 { public void method2(); public void method3(); } interface I3 { public void method4(); public void method5(); } class A{ public void depend1(I1 i){ i.method1(); } public void depend2(I2 i){ i.method2(); } public void depend3(I2 i){ i.method3(); } } class B : I1, I2{ public void method1() { Debug.Log("类B实现接口I1的方法1"); } public void method2() { Debug.Log("类B实现接口I2的方法2"); } public void method3() { Debug.Log("类B实现接口I2的方法3"); } } class C{ public void depend1(I1 i){ i.method1(); } public void depend2(I3 i){ i.method4(); } public void depend3(I3 i){ i.method5(); } } class D : I1, I3{ public void method1() { Debug.Log("类D实现接口I1的方法1"); } public void method4() { Debug.Log("类D实现接口I3的方法4"); } public void method5() { Debug.Log("类D实现接口I3的方法5"); } }