Java面向对象_接口应用——策略模式
2024-09-06 10:42:35
概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。
接口抽象的就是某种方法。
OO设计原则:1.面向接口编程 2.封装变化 3.多用组合,少用继承
public class Practice14 { public static void main(String[] args) {
// TODO Auto-generated method stub
//用父类的引用指向子类对象
Bird d=new BigBird("小白");
d.setF(new Fly());
d.fly();
Bird d1=new BigBird("小黑");
d1.setF(new NoFly());
d1.fly();
}
}
//接口
interface FlyType{
void fly();
} class Fly implements FlyType{
public void fly(){
System.out.println("我会飞");
}
}
class NoFly implements FlyType{
public void fly(){
System.out.println("我不会飞");
}
}
//抽象类
abstract class Bird{
private String name;
private FlyType f;//组合
public Bird(String name){
this.name=name;
}
public FlyType getF() {
return f;
}
public void setF(FlyType f) {
this.f = f;
}
public void fly(){
System.out.println("我的名字叫"+name);
f.fly();
} } class BigBird extends Bird{
public BigBird(String name){
super(name);
}
}
class ModelBird extends Bird{
public ModelBird(String name){
super(name);
}
}
最新文章
- iOS微信第三方登录实现
- 火车头采集ecshop 文章接口文件
- Docker - Docker国内镜像的配置及使用
- CBarChart柱形图类
- 获取元素在浏览器中的绝对位置(从jquery1.8中抠出来)
- 再看.net本质(二)
- javascript实现KMP算法(没啥实用价值,只供学习)
- jFinal中报对应模型不存在的错误(The Table mapping of model: demo.User not exists)
- Ubuntu密码忘记了怎么办(转载)
- 3.python元组与列表
- selenium2自动化测试学习笔记(五)-参数化编程,自动登陆网易QQ邮箱
- Python——开发一个自动化微信投票器【附代码实例方法】
- 使用scrapy爬取海外网学习频道
- 20165318 2017-2018-2《Java程序设计》课程总结
- 04 Maven 仓库
- OAuth2学习笔记
- 从父子组件的mounted钩子的同步执行与页面的异步渲染看nextTick的用法
- 城联数据TSM技术方案起底
- px、dp、sp、mm、in、pt这些单位有什么区别?
- 项目记录 -- zfs get all [volume] python实现的数据构造
热门文章
- 深入理解javascript中的立即执行函数
- IAR常用快捷键及技巧
- POJ百练—IP地址转换
- js一个游戏小笔记
- kafka 基础知识梳理(转载)
- java报表开发之报表总述
- k8s基础 etcd参数
- arguments详解
- lyui 列表 上传
- 报错:defined for 'courierAction_pageQuery' in namespace '/'Error creating bean with name 'cn.itcast.bos.web.action.base.CourierAction': Injection of autowired dependencies failed; nested exception is or