编程思想

面向过程编程 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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • PHP语言是同时可以应用面向过程和面向对象方式的编程,面向过程与面向对象在许多编程语言中只能使用二者之一来进行编程...
    IT菌阅读 4,578评论 0 1
  • 1)POP--面向过程编程(Process-oriented programming): 面向过程编程是以功能为中...
    依耳私语阅读 3,051评论 0 2
  • 1.什么是面向切面编程 AOP(Aspect-Oriented Programming),面向切面编程,看着是跟O...
    Simba_LX阅读 4,158评论 0 3
  • 文/南木婉清 (双调九十七字,词林正韵) 凉风暗袭,夜幕将临,烟囱袅袅伫立 点点淋漓,窗外雨凄声急 芭蕉小奏一...
    南木婉清阅读 3,535评论 8 28
  • 今天看到同学分享的时间管理的基础是情绪管理,我任劳不认怨自己做了最大最多的付出,却因情绪让自己失控,损失了2天时间...
    云钱阅读 2,682评论 0 0

友情链接更多精彩内容