首頁 後端開發 php教程 PHP+Java的开发经验:不要太面向对象_PHP教程

PHP+Java的开发经验:不要太面向对象_PHP教程

Jul 15, 2016 pm 01:26 PM
多少 物件 開發 現在 經驗 語言 面向

说起面向对象,现在很多语言多少都有一些。Java是传统的面向对象语言,PHP也有一些面向对象,但不是很好。完全的面向对象在具体的项目中(本文是Web开发项目),有时候其实并不是最好的选择。本文作者最终选择了PHP+Java的一个模式,并分享了一些自己的经验。

我较早接触了C++(高中),也较早接受了面向对象思想。面向对象思想更接近人的思考方式,其封装、继承等特性也常常能够简化一些工作,最重要的是思路看起来清晰多了。我对面向对象的思想深信不疑,直到有一天,我在WEB项目中陷入困惑。

我以前的工作也都是WEB开发相关的,通常项目里都是接口、实现,service层,DAO层这个样子。久而久之,就习惯了这种模式。后来,我开始自己做网站(自己运营),也沿用这种模式,花了一阵子时间把东西弄出来,可以跑了,问题也随之而来了。大家都知道,类似门户网站这样的东西,尤其是成长期的网站,可能会经常面对一些变更、扩展。它不像企业项目或是以稳定模式运营的网站,可以一套写好的程序一直用下去。可是JAVA的东西改动起来有点麻烦。

第一:项目里用了很多接口,业务变更有不少时候还要动接口。也许有人会说,这是因为需求没做好。是的,可以这么认为,但有个前提:需求根本没法一步到位,否则网站也别跑了,等需求分析做好,花都谢了。回忆一下这个经典的流程:要增加一个特性(页面部分暂不讨论),先增加或修改一个service接口;然后增加或修改其实现;接着视需要可能还要再增加或修改一个DAO层接口,对应的要增加或修改其实现;最后,我们真正要改的,往往只是一个SQL语句。

这一系列流程太过繁琐了。门户网站基本是展示信息的,它的业务逻辑,说到底基本上是SQL语句体现出来的。你想想看,网站上显示什么东西,怎么排序,怎么聚合,这些不都对应着相应的SQL语句么?如果你非要把DAO层写成基本的增删改,然后在service层大作文章去实现本来对应着一个SQL语句的业务罗辑,这有什么意思呢?纯粹为了分层而分层?为了面向对象而面向对象?更不用说那一堆接口,平白增加工作量。我当然不会否认接口在编程思想中的意义,只是传统的JAVA WEB编程中的那一堆接口,是否真正是一个合理应用呢?我看很多情况下不是。我后来用PHP重写我的项目中的一大部分功能,只用了几天的时间,没有分层,没有接口。这样带来的工作效率的提升,真是惬意!

第二:JAVA WEB项目的发布通常需要重启服务,造成WEB运行中断。不少人在讨论热部署,我不知道热部暑最终能达到怎样一个水平,但我想信无法达到像PHP那样随时修改文件随时生效。为了不中断服务,我通常选择做个集群,轮流发布。这样虽然仍旧有可能产生一些问题,但比中断应用好多了。可是集群会带来发布上的麻烦,集群本身也未必是我真正需要的。

随之而来的还有一些小问题,比如如果我项目中包含一些存储大量文件的文件夹,在发布的时候又要特别处理,这样很不爽。即使做软链接,发布时也免不了要做额外工作。这些问题,当然我想信会有更好的解决办法,我个人目前仍在探索中。

面对上述这些问题,我最终不再坚守面向对象。我把项目改成了前PHP后JAVA的形式。PHP做前端显得灵活多了,整个改版,PHP的逻辑部分没花多少时间,时间都用在了页面设计上;JAVA的后端又能保证稳定高效,易于安全设计。由此,我最终发出了“不要太面象对象”这一感叹。需求决定一切,跟着别人的思想走,跟入邪教没区别。

问题也还并没有结束,对JAVA后端部分,我还在探索一个基于插件式的可以热加载、缷截插件的CMS后端系统。呵,不能因为上面的原因把面象对象一棒子打死。

不过不管怎样,看了作者的描述,倒是不妨试试PHP+Java的组合:看看放弃一些面向对象能够带来些什么好处吧。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446594.htmlTechArticle说起面向对象,现在很多语言多少都有一些。Java是传统的面向对象语言,PHP也有一些面向对象,但不是很好。完全的面向对象在具体的项目...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

四款值得推薦的AI輔助程式工具 四款值得推薦的AI輔助程式工具 Apr 22, 2024 pm 05:34 PM

這個AI輔助程式工具在這個AI快速發展的階段,挖掘出了一大批好用的AI輔助程式工具。 AI輔助程式設計工具能夠提升開發效率、提升程式碼品質、降低bug率,是現代軟體開發過程中的重要助手。今天大姚給大家分享4款AI輔助程式工具(而且都支援C#語言),希望對大家有幫助。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI編碼助手,可幫助你更快、更省力地編寫程式碼,從而將更多精力集中在問題解決和協作上。 Git

AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 AI程式設計師哪家強?探索Devin、通靈靈碼和SWE-agent的潛力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距離世界首個AI程式設計師Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程式設計師SWE-agent。它利用GPT-4模型在GitHub儲存庫中自動解決問題。 SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。 SWE-agent透過與專用終端交互,可以開啟、搜尋文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。 (註:以上內容為原始內容微調,但保留了原文中的關鍵訊息,未超過指定字數限制。)SWE-A

學習如何利用Go語言開發行動應用程式 學習如何利用Go語言開發行動應用程式 Mar 28, 2024 pm 10:00 PM

Go語言開發行動應用程式教學隨著行動應用程式市場的不斷蓬勃發展,越來越多的開發者開始探索如何利用Go語言開發行動應用程式。作為一種簡潔高效的程式語言,Go語言在行動應用開發中也展現了強大的潛力。本文將詳細介紹如何利用Go語言開發行動應用程序,並附上具體的程式碼範例,幫助讀者快速入門並開始開發自己的行動應用程式。一、準備工作在開始之前,我們需要準備好開發環境和工具。首

如何將 MySQL 查詢結果陣列轉換為物件? 如何將 MySQL 查詢結果陣列轉換為物件? Apr 29, 2024 pm 01:09 PM

將MySQL查詢結果陣列轉換為物件的方法如下:建立一個空物件陣列。循環結果數組並為每一行建立一個新的物件。使用foreach迴圈將每一行的鍵值對賦給新物件的對應屬性。將新物件加入到物件數組中。關閉資料庫連線。

Android開發最適合的Linux發行版是哪一個? Android開發最適合的Linux發行版是哪一個? Mar 14, 2024 pm 12:30 PM

Android開發是一項繁忙而又令人興奮的工作,而選擇適合的Linux發行版來進行開發則顯得尤為重要。在眾多的Linux發行版中,究竟哪一個最適合Android開發呢?本文將從幾個方面來探討這個問題,並給出具體的程式碼範例。首先,我們來看看目前流行的幾個Linux發行版:Ubuntu、Fedora、Debian、CentOS等,它們都有各自的優點和特點。

探索智能體的邊界:AgentQuest,一個全面衡量和提升大型語言模型智能體性能的模組化基準框架 探索智能體的邊界:AgentQuest,一個全面衡量和提升大型語言模型智能體性能的模組化基準框架 Apr 11, 2024 pm 08:52 PM

基於大模型的持續最佳化,LLM智能體-這些強大的演算法實體已經展現出解決複雜多步驟推理任務的潛力。從自然語言處理到深度學習,LLM智能體正逐漸成為研究和工業界的焦點,它們不僅能理解和生成人類語言,還能在多樣的環境中製定策略、執行任務,甚至使用API​​調用和編碼來建置解決方案。在這種背景下,AgentQuest框架的提出具有里程碑意義,它不僅僅是一個LLM智能體的評估和進步提供了一個模組化的基準測試平台,而且透過其易於擴展的API,為研究人員提供了一個強大的工具,以更細緻地追蹤和改進這些智能體的性能

Go語言前端技術探秘:前端開發新視野 Go語言前端技術探秘:前端開發新視野 Mar 28, 2024 pm 01:06 PM

Go語言作為一種快速、高效的程式語言,在後端開發領域廣受歡迎。然而,很少有人將Go語言與前端開發聯繫起來。事實上,使用Go語言進行前端開發不僅可以提高效率,還能為開發者帶來全新的視野。本文將探討使用Go語言進行前端開發的可能性,並提供具體的程式碼範例,幫助讀者更了解這一領域。在傳統的前端開發中,通常會使用JavaScript、HTML和CSS來建立使用者介面

vivox60pro語言顯示怎麼更改 vivox60pro系統語言設定方法 vivox60pro語言顯示怎麼更改 vivox60pro系統語言設定方法 Mar 23, 2024 am 09:06 AM

1.在手機設定選單中點選【系統管理】。 2、點選【語言】選項。 3.選擇需要使用的系統語言即可。

See all articles