1、制定统一规范(是什么就必须能做什么)
接口完全支持多继承,实现多接口
extends 拓展
implements 实现
接口只能定义抽象方法、类方法、默认方法(默认public static修饰),
只能定义全局静态常量(默认public static final)
接口不可以包含构造器和初始化代码块、不可以实例化、不能有变量
接口可以包含成员变量、方法、内部类
实现类必须实现接口中的所有抽象方法
模板方法设计模式
抽象类体现的是一种模板模式,抽象类作为子类的公用模板,子类在抽象类的基础上进行改造和扩展,但是子类总会保留抽象类的行为方式
解决的问题:当功能内部实现是确定的,一部分是不确定的,不确定的部分暴露出去让子类去实现
一个抽象父类,父类提供多个子类的公用方法
工厂方法设计模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类
1.当一个类不知道他所创建的对象的类的时候
2.当一个类希望有他的子类来指定所创建的对象的时候
3.当类创建对象的职责委任给多个子类中的某一个,并希望**********************************
以上三点没啥用
根据传递的参数不同,具有不同的行为
public class TestFactoryMethod { public static void main(String[] args) { Android android1 = (Android)getMobile(new AndroidFactory()); Iphone i1 = (Iphone)getMobile(new IPhoneFactory()); } //策略模式:根据传递的参数不同具有不同的行为的方法(包含不变的部分,变化的部分就是策略) public static Mobile getMobile(MobileFactory factory) { return factory.createMobile(); } }
由 getmobile 方法决定创建何种mobile
传入工厂种类,进入工厂,返回,具体类型具体转化
以安卓为例
3.代理模式
为其他对象提供一种代理以控制这个对象的访问
4.单例模式
定义一个类,这个类只能创建一个对象
private int age; private int lev;//0-5 private static Girl gril; private Girl(int age,int lev) { this.age =age; this.lev = lev; } public static Girl getGril(int age,int lev) { if(gril==null) { gril = new Girl(age,lev); } return gril; }
调用getGril方法只能创建一个Gril
原文:https://www.cnblogs.com/springxian/p/13437585.html