การอ่านบทความที่เหยียดหยามเกี่ยวกับข้อเสียของ OOP เพื่อสนับสนุนกระบวนทัศน์อื่น ๆ ที่ฉันพบเจอตัวอย่างที่ฉันไม่สามารถหาข้อผิดพลาดได้มากเกินไป
ฉันต้องการที่จะเปิดให้มีการโต้แย้งของผู้เขียนและแม้ว่าฉันสามารถเข้าใจประเด็นทางทฤษฎีของพวกเขาตัวอย่างหนึ่งโดยเฉพาะอย่างยิ่งฉันมีเวลายากที่จะลองจินตนาการว่ามันจะนำมาใช้ที่ดีขึ้นในการพูดภาษา FP
// Consider the case where “SimpleProductManager” is a child of
// “ProductManager”:
public class SimpleProductManager implements ProductManager {
private List products;
public List getProducts() {
return products;
}
public void increasePrice(int percentage) {
if (products != null) {
for (Product product : products) {
double newPrice = product.getPrice().doubleValue() *
(100 + percentage)/100;
product.setPrice(newPrice);
}
}
}
public void setProducts(List products) {
this.products = products;
}
}
// There are 3 behaviors here:
getProducts()
increasePrice()
setProducts()
// Is there any rational reason why these 3 behaviors should be linked to
// the fact that in my data hierarchy I want “SimpleProductManager” to be
// a child of “ProductManager”? I can not think of any. I do not want the
// behavior of my code linked together with my definition of my data-type
// hierarchy, and yet in OOP I have no choice: all methods must go inside
// of a class, and the class declaration is also where I declare my
// data-type hierarchy:
public class SimpleProductManager implements ProductManager
// This is a disaster.
โปรดทราบว่าฉันไม่ได้มองหาการโต้แย้งหรือคัดค้านข้อโต้แย้งของผู้เขียนสำหรับ "มีเหตุผลใดเหตุผลว่าทำไม 3 พฤติกรรมเหล่านี้ควรเชื่อมโยงกับลำดับชั้นข้อมูล?"
สิ่งที่ฉันถามโดยเฉพาะคือตัวอย่างนี้จะเป็นตัวอย่าง / โปรแกรมในภาษา FP อย่างไร (รหัสจริงไม่ใช่ในทางทฤษฎี)