####面向过程编程 Procedure Oriented Programming(POP) 实现目的:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用。 主要概念:方法、过程 代码示例:
public class Test {
public static void main(String[] args) {
System.out.println("第一个女孩子洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("周6"+"吃肯德基");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
System.out.println("第二个女孩子洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("周6"+"吃肯德基");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
System.out.println("第一个女孩子洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("周日"+"约会");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
System.out.println("第二个女孩子洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("周日"+"约会");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
}
}
####面向对象编程 Object Oriented Programming(OOP) 实现目的:由单个能够起到子程序作用的单元或对象组合而成。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。 主要概念:对象、类、封装、继承、多态、消息传递、数据抽象、动态绑定 代码示例:
public class Girl1 {
public void KFC(String datetime){
System.out.println("洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("我是第一个女孩");
System.out.println(datetime+"吃肯德基");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
}
public void meet(String datetime){
System.out.println("洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("我是第一个女孩");
System.out.println(datetime+"约会");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
}
}
public class Girl2 {
public void KFC(String datetime){
System.out.println("洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("我是第二个女孩");
System.out.println(datetime+"吃肯德基");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
}
public void meet(String datetime){
System.out.println("洗澡");
System.out.println("穿衣服");
System.out.println("化妆");
System.out.println("*****************");
System.out.println("我是第二个女孩");
System.out.println(datetime+"约会");
System.out.println("*****************");
System.out.println("卸妆");
System.out.println("洗澡");
System.out.println("睡觉");
}
}
/*
* 面向对象,OOP,抽象成2个女孩的类,以及她的属性
*/
public class Test {
public static void main(String[] args) {
Girl1 g1 = new Girl1();
Girl2 g2 = new Girl2();
g1.KFC("周六");
g1.meet("周日");
g2.KFC("周六");
g2.meet("周日");
}
}
####面向切面编程 Aspect Oriented Programming(AOP) 实现目的:针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。 使用范围:切面、连接点、处理逻辑、切点、引进、目标类、代理类、插入 代码示例:
public class GirlProxy implements Girl {
private Girl g;
public GirlProxy(String name){
if ("girl1".equals(name)){
g = new Girl1();
}else if ("girl2".equals(name)){
g = new Girl2();
}
}
@Override
public void KFC(String datetime) {
g.KFC(datetime);
}
@Override
public void meet(String datetime) {
g.meet(datetime);
}
}
/*
* 增加一个代理类,
* 把核心的业务逻辑的代码 和 非核心的 分离
* 把非核心的代码交给proxy去管理,
*/
public class Test {
public static void main(String[] args) {
Girl g1 = new GirlProxy("girl1");
Girl g2 = new GirlProxy("girl2");
g1.KFC("周六");
g1.meet("周日");
g2.KFC("周六");
g2.meet("周日");
}
}
####面向接口编程 Interface Oriented Programming(IOP基于OOP) 推荐 实现目的:为了需求变更,接口层dll不用重新编译,只要编译实现层dll即可。调用接口的人会感到很舒服,接口依旧功能更新。适用于较不固定需求的项目。 主要概念:低耦合,便于扩展 代码示例:
/*
* 2个女孩的方法如上(Gril1,Gril2)没有变动
*/
public interface Girl {
public void KFC(String datetime);
public void meet(String datetime);
}
/*
* 面向接口
* 本例的缺点:
* 1.非业务逻辑的代码,跟核心的业务逻辑代码,耦合一起
* 2.一旦非业务逻辑的代码发生改变,全部实现类都要去改
*/
public class Test {
public static void main(String[] args) {
Girl g1 = new Girl1();
Girl g2 = new Girl2();
g1.KFC("周六");
g1.meet("周日");
g2.KFC("周六");
g2.meet("周日");
}
}
####面向实现编程 Realize Oriented Programming(ROP基于OOP) 实现目的:当我们要控制某个类的对象,那么我们会直接在当前程序(自身类)中,实例化该类,然后通过该类调用相应的方法。这是一种最基本的面向对象编程模式。 主要概念:高耦合,不支持多态 代码示例:
/*
* 面向现实
* 假设有两种品牌的轮胎,普利司通(Bridgestone)和米其林(Michelin)
* 而轮胎的共同特性都是会转(roll)。那么我们可以得到两个类:
*/
class Bridgestone {
public void roll() {
System.out.print("Bridgestone is rolling.");
}
}
class Michelin {
public void roll() {
System.out.print("Michelin is rolling");
}
}
//对于一辆装了普利司通轮胎的汽车(Car),汽车的转动(roll)就是轮胎的转动:
class Car {
public void roll(Bridgestone tire) {
tire.roll();
}
}
//如果我装了米其林的轮胎
Car car = new Car();
Michelin tire = new Mechilin();
car.roll(tire);
这就是面向实现编程,变量是指向特定类的实例的。
这种强烈的依赖关系将会大大地抑制编程的灵活性和可复用性。
####参考文档:https://blog.csdn.net/ssh159/article/details/52516986