Java简单工厂模式以及接口基础
来源:互联网 发布:php 存储过程 编辑:程序博客网 时间:2024/06/04 22:47
package second;/* * 任务: * 1.多态:作为参数和返回值的多态应用 上课例子 简单工厂设计模式 * 2.接口:策略设计模式实践 *//* * 一、工厂设计模式: * 简单工厂 * 工厂方法 * 抽象工厂 * *//* * 简单工厂设计模式: * 作用:工厂实现不同类实例的创建,用同一种调用方式,简化操作 * *//* * 接口: * 1.定义:接口是一种规范,是一种定义和分离的设计哲学。降低程序各个模块的耦合,提供扩展和维护性。 * 接口是一种更加特殊的抽象类,它里面不能包含普通方法,只能是抽象方法 * 注意我们总是以为pc插槽是接口,其实是错误的,插槽遵守的规则才是接口,而PC插槽只是接口的实例 * 2.具体定义方式: * 修饰符 interface 接口名 extends 父接口1,父接口2.。 * { * //以下所有成员默认和加修饰只能为public * * //常量定义:成员变量 (静态常量)系统自动添加 static final 且接口没有初始化和构造函数 只能在定义时就设置默认值 * int a =10; * public static finally b = 12; * * //抽象方法定义:抽象实例方法和类以及默认方法 * // 接口里不能有普通方法 接口里定义的普通方法将会默认添加abstract 且普通方法不能有方法体 * // 接口里的类和默认方法必须有实现体 * * //内部类,接口,枚举定义 系统自动加public static * //零到多个默认方法或者类方法定义 * } * //修饰符:public(所有范围可见),defualt(包之间不可见,包内可见) * //接口名:命名规则和类一致 * //接口可以有多个父类接口,但是只能继承接口,不能继承类 * 3.接口特性: * 接口的定义的是多个类共同行为的一种规范,所以不能实例,自热没有构造函数和初始化块的定义 * 4.接口和类的区别: * 接口中所有成员都是public访问权限(规范性质决定) * 接口里的方法只能是抽象方法和类方法和默认方法 * 接口成员比类成员少两种 * 5.程序实现: * 6.接口继承:支持多继承子类继承将会获得父类里所有的成员方法和变量 * 7.继承定义方式: * public interface A extends B,C,D{} * 8.使用接口: implement弥补java中的单继承 * 9.使用接口的定义形式: * class A extends B implements a,b{} * 10.实现的特性: * 可以创建接口类型的实类对象 并且把他继承为Object a * 实现可以看为特殊的继承 * 一个类继承了该接口,则必须实现该接口的所有抽象方法 * 11. * * */class Factory{//定义工厂类 负责生产类 public static Car getString(String name){//有必要加static吗? //必须加static 为了工厂类 通过类名调用生产实例的方法getName() if (name.equals("RollsRoyce")){ return (new RollsRoyce()); } if(name.equals("Bentley")){ return (new Bentley()); }else{ System.out.println("该工厂不能生产"+name+"类型的实例"); return null; } }}interface Car{//接口有两种修饰属性 但此处public不能使用 因为文件中已经包含一个public //普通方法不能定义方法体 public String getName(); //定义成员变量一定是静态常量 以下一致 int a = 0; public static final int b =0; //定义默认方法 前面加default //默认方法不能用static修饰 所以要调用必须使用接口的实例调用 default void fun(){ System.out.println("默认方法定义修饰符为defualt"); } //定义类方法 //类方法可以用接口来调用 static void function(){ System.out.println("定义类方法必须加static修饰"); }}class RollsRoyce implements Car{//生产劳斯莱斯的类 public String getName(){ return "RollsRoyce"; } }class Bentley implements Car{//生产宾利的类 public String getName(){ return "Bentley"; }}/*//即使另一个类属于另一个包中,也可以调用该接口 * package one; * * class Test{ * public static void main(String args[]){ * //调用常变量 * System。out。println(second.Car.a); * second.Car.a =1;//报错 final赋值异常 * //调用类方法 * System.out.println(second.Car.function()); * //如果想要定义一个全包可见的类,必须加public,所以接口名必须和class文件名相同 * * } * * } * */public class FactoryPattern { public static void main(String args[]){ //多态的返回值类型应用 接口可以成为类型 类名调用静态方法实现对象创建 Car a = Factory.getString("aaaa"); if(a != null){ System.out.println(a.getName()); }//预测结果:aaa Car b = Factory.getString("Bentley"); if(b != null){ System.out.println(b.getName()); }//预测结果:Bentley }}/* * 运行结果: * 该工厂不能生产aaaa类型的实例 Bentley * * */
阅读全文
0 0
- Java简单工厂模式以及接口基础
- Java基础复习:简单工厂模式
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- Java 接口工厂模式
- 【java基础补充】java接口、工厂模式和抽象类
- java va中工厂模式( 静态工厂模式、工厂方法模式、抽象工厂模式)的介绍以及简单例子
- JAVA接口的应用及工厂模式的简单示例
- 简单工厂模式、工厂模式以及抽象工厂模式
- Java工厂模式(基础)
- Java 简单工厂模式
- java 简单工厂模式
- 简单工厂模式--Java
- Java简单工厂模式
- Java简单工厂模式
- java简单工厂模式
- java 简单工厂模式
- java 简单工厂模式
- java简单工厂模式
- 数据库学习纪要(二十八):MySQL-8-部分数据函数
- 【悬而未决的算法题】marker下来等待解决(随时更新)
- 阿里云幸运券优惠券领取和使用规则
- 集群客户端
- 008day(for循环及while语句的学习)
- Java简单工厂模式以及接口基础
- 四、tensorflow之variable(变量)
- Django模板中的关闭和开启HTML自动转义,解析
- [CF235E]Number Challenge
- 使用信号量控制线程互斥和同步。
- 收集邮票
- 0106-牧草量
- 1992个1992的乘积的末两位数是多少?
- HDU