interface / abstract 简单应用
来源:互联网 发布:c语言打印布尔值 编辑:程序博客网 时间:2024/06/13 12:01
通常一个类的功能变得复杂的时候,会考虑重构代码,
进一步抽象出其它类,达到解耦作用,同时也方便维护。
无论是采用设计模式还是简单重构,多少都会涉及到接口和抽象类的使用。
以一个简单的例子加深理解。
ComplexTest 会随着功能的增加逐渐变得复杂,难以理解和维护。
接口SampleInterface及 抽象类SampleAbstract 可以使之变得简单,便于理解和维护。
也便于以后扩展功能SampleSubE...
1.主代码:
package com.example;public class MainTest { public static void main(String args[]) { boolean isComplex = false; if ( isComplex) { ComplexTest complex = new ComplexTest(); complex.function1(); complex.function2(); complex.function3(); complex.function4(); }else{ SampleAbstract subA = new SampleSubA(); SampleAbstract subB = new SampleSubB(); SampleAbstract subC = new SampleSubC(); SampleAbstract subD = new SampleSubD(); subA.function(); subB.function(); subC.function(); subD.function(); } }}
2. 未使用 interface /abstract 之前代码:
package com.example;public class ComplexTest{ public void function1() { System.out.println("I am function1 in ComplexTest!"); } public void function2() { System.out.println("I am function2 in ComplexTest!"); } public void function3() { System.out.println("I am function3 in ComplexTest!"); } public void function4() { System.out.println("I am function4 in ComplexTest!"); }}
3. 使用interface /abstract 代码:
(1)接口及抽象类
package com.example;interface SampleInterface{ void function();}public abstract class SampleAbstract implements SampleInterface{ @Override public void function() { }}
(2)子类A
package com.example;public class SampleSubA extends SampleAbstract{ @Override public void function() { System.out.println("I am function in " + this.getClass().toString()); }}
子类B
package com.example;public class SampleSubB extends SampleAbstract{ @Override public void function() { System.out.println("I am function in " + this.getClass().toString()); }}
(3)子类C
package com.example;public class SampleSubC extends SampleAbstract{ @Override public void function() { System.out.println("I am function in " + this.getClass().toString()); }}
(4)子类D
package com.example;public class SampleSubD extends SampleAbstract{ @Override public void function() { System.out.println("I am function in " + this.getClass().toString()); }}
-- END --
0 0
- interface / abstract 简单应用
- virtual、abstract、、Interface区别及应用
- interface vs abstract class 应用场景总结
- virtual、abstract、、Interface区别及应用
- Abstract Interface
- abstract interface & interface
- abstract 和 interface 的区别及其各自的应用场合
- interface ---接口 的简单应用
- abstract interface和interface中的abstract 方法
- abstract class和interface
- abstract class和interface
- Abstract class versus Interface
- abstract class和interface
- abstract class && Interface 比较
- Interface And Abstract Class
- Abstract class & Interface
- abstract class和interface
- abstract class和interface
- 远程推送
- Volley简介
- 解析 pdu
- 关于 栈和堆
- SpringMVC中使用Interceptor拦截器
- interface / abstract 简单应用
- 阿里云ECS服务器php运行环境配置全过程
- location对象
- 风口的猪-中国牛市--笔试题
- mysql数据库删除(可用于linux)
- ListView中的setOnScrollListener监听事件
- 30OS笔记(3)
- 最小生成树kruskal算法
- Android源码编译(9)---已知问题