面向?qū)ο缶幊?,再見?/h1>
時(shí)間:2020-04-27 09:58:27
關(guān)鍵字:
面向?qū)ο缶幊?/a>
BSP
函數(shù)
LEM
手機(jī)看文章掃描二維碼
隨時(shí)隨地手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
作為程序員,你是使用函數(shù)式編程還是面向?qū)ο缶幊?/a>方式?
在本文中,擁有 10 多年軟件開發(fā)經(jīng)驗(yàn)的作者從面向?qū)ο缶幊痰娜筇匦浴^承、封裝、多態(tài)三大角度提出了自己的疑問,并深刻表示是時(shí)候和面向?qū)ο缶幊陶f再見了。
01
面向?qū)ο笳Z言的問題在于,它們依賴于特定的環(huán)境。你想要個(gè)香蕉,但拿到的卻是拿著香蕉的猩猩,乃至最后你擁有了整片叢林。
Class PoweredDevice {
}
Class Scanner inherits from PoweredDevice {
function start() {
}
}
Class Printer inherits from PoweredDevice {
function start() {
}
}
Class Copier inherits from Scanner, Printer {
}
Class PoweredDevice {
}
Class Scanner inherits from PoweredDevice {
function start() {
}
}
Class Printer inherits from PoweredDevice {
function start() {
}
}
Class Copier {
Scanner scanner
Printer printer
function start() {
printer.start()
}
}
import java.util.ArrayList;
public
class
Array
{
private ArrayList<Object> a =
new ArrayList<Object>();
public void add(Object element)
{
a.
add(element);
}
public void addAll(Object elements[])
{
for (
int i =
0; i < elements.length; ++i)
a.
add(elements[i]);
// this line is going to be changed
}
}
public
class ArrayCount extends Array
{
private
int count =
0;
@Override
public void add(Object element)
{
super.add(element);
++count;
}
@Override
public void addAll(Object elements[])
{
super.addAll(elements);
count += elements.length;
}
}
public void addAll(Object elements[])
{
for (
int i =
0; i < elements.length; ++i)
add(elements[i]);
// this line was changed
}
Document
Company
Handbook
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!






