Семь принципов ООП-программ

Java
Семь принципов ООП-программ

принцип открыто-закрыто

Принцип открытого-закрытого эквивалентен прародителю всех принципов, он утверждает, что он закрыт для модификации и открыт для расширения.

Принцип замены Лисков

Когда два класса имеют отношения наследования, подкласс не может изменять методы и переменные родительского класса.; в замене РихтеразаменятьОтносится к: когда есть родительский класс, родительский класс может быть заменен подклассом, и это не влияет на программу, которая следует принципу подстановки Лискова; когда он заменяется подклассом, это влияет на программа, указывающая, что подкласс Если метод родительского класса изменен, принцип подстановки Лисков не соблюдается;

Принцип инверсии зависимости

Принцип инверсии зависимостей является реализацией принципа открытости-закрытости, и он также выступает за то, чтобы он был открыт для расширения и закрыт для модификации. Его основная идея заключается вСтолкнитесь с программированием интерфейса, не сталкивайтесь с программированием конкретной реализации.

来自C语言中文网
Из китайской сети языка C

Это следующая принцип инверсии зависимости от диаграмм UML-диаграмм UML, исходные слова, когда клиенты покупают товары, покупки этот метод, который будет передан в соответствующий магазин, магазин, когда вы хотите изменить, мы должны изменить CusRomer этот класс метода покупок, а теперь как Долгое, как определение интерфейсов в магазине, все магазины - это методы для достижения этого интерфейса, метод покупок до тех пор, пока клиентский класс входящего магазина этот интерфейсный класс на нем. Тогда конкретное осознание, чтобы купить, где можно было купить в магазин на нем, не модифицируя метод CusRomer этого класса;

//代码来之'C语言中文网'
public class DIPtest
{
    public static void main(String[] args)
    {
        Customer wang=new Customer();
        System.out.println("顾客购买以下商品:"); 
        wang.shopping(new ShaoguanShop()); 
        wang.shopping(new WuyuanShop());
    }
}
//商店
interface Shop
{
    public String sell(); //卖
}
//韶关网店
class ShaoguanShop implements Shop
{
    public String sell()
    {
        return "韶关土特产:香菇、木耳……"; 
    } 
}
//婺源网店
class WuyuanShop implements Shop
{
    public String sell()
    {
        return "婺源土特产:绿茶、酒糟鱼……"; 
    }

//顾客
class Customer
{
    public void shopping(Shop shop)
    {
        //购物
        System.out.println(shop.sell()); 
    }
}

//输出
顾客购买以下商品:
韶关土特产:香菇、木耳……
婺源土特产:绿茶、酒糟鱼……

единственная ответственность

Единая ответственность требует, чтобы класс отвечал только за одну ответственность; Звучит просто, но на практике это очень трудно понять. Поскольку эта ответственность является очень абстрактным понятием в Китае, Китай является страной с очень богатым культурным наследием, точно так же, как пример, упомянутый в книге «Дзен шаблонов проектирования»: например, китайские палочки для еды могут использоваться как и то, и другое. нож используется для разделения пищи, и его также можно использовать в качестве вилки для еды.В зарубежных странах вилка - это вилка, и когда она используется для взятия пищи, нож используется для разделения пищи, поэтому этот единственный Ответственность требует от разработчиков программного обеспечения очень богатого практического опыта. Иначе трудно понять;

Закон Деметры

Закон Деметры также известен как принцип наименьшего знания: чем меньше класс раскрывает, тем лучше.

  1. С точки зрения зависимых лиц, ей должны полагаться только зависимые объекты.
  2. С точки зрения зависимого, выставляйте только те методы, которые должны быть выставлены.

Личное понимание: когда классу A необходимо вызвать три метода класса B для достижения функции, класс B может инкапсулировать эти три метода, а затем предоставить инкапсулированный метод только для A, так что A должен вызывать только B. Этот метод инкапсуляции Когда есть изменения в трех методах B, вам нужно только изменить метод внешней инкапсуляции B, но вызывающему объекту A не нужно его менять, потому что A знает только, что вызов этого метода может выполнить функцию. Не нужно указывать конкретно, как реализована внутренняя реализация B, что снижает степень связанности программы;

Принцип разделения интерфейса

Это похоже на единую ответственность, но не то же самое.

  • Принцип единой ответственности фокусируется на обязанностях, а принцип разделения интерфейса — на изоляции зависимостей интерфейса.
  • Принцип единой ответственности в основном ограничивает класс, который нацелен на реализацию и детали в программе; принцип изоляции интерфейса в основном ограничивает интерфейс, в основном направленный на построение абстракции и общей структуры программы.

Официальное определение:От программистов требуется сделать все возможное, чтобы разделить раздутый интерфейс на более мелкие и более конкретные интерфейсы, чтобы интерфейс содержал только те методы, которые интересуют клиентов, и уменьшал степень связанности программ.

Это правило также следует применять в соответствии с реальным бизнес-сценарием.Если уровень детализации слишком мал, это приведет к резкому увеличению классов.Очевидно, что функции достаточно трех-четырех классов.Если степень детализации мала, она будет становится дюжина или даже больше.Десятки из них, хотя связь программы низкая и более гибкая, трудно поддерживать. Если степень детализации велика, степень связи будет высокой, и программа будет негибкой. Следовательно, этот принцип требует от технического персонала достаточной практики, опыта и понимания;

Принцип синтетического повторного использования

Это требует, чтобы при повторном использовании программного обеспечения необходимо сначала использовать отношения ассоциации, такие как композиция или агрегация, для его реализации, а затем рассмотреть возможность использования отношений наследования для его реализации. Если вы хотите использовать отношения наследования, вы должны строго следоватьПринцип замены Лисков. Составной принцип повторного использования и принцип замещения Лисков дополняют друг друга, и оба являются конкретными спецификациями реализации принципа открытого-закрытого.

Если вы не знаете, что такое композиция и агрегация, вы можете прочитать эту статью>, хорошо говорит

Суммировать

В программировании старайтесь следовать семи принципам ООП. Но есть хорошая поговорка,Правила мертвы, люди живы. Это означает, что эти семь принципов иногда не являются всемогущими. Иногда, если некоторые бизнес-сценарии следуют этим принципам, их становится трудно поддерживать. Поэтому все должно основываться на реальности. То же самое верно и для 23 шаблонов проектирования. следуй мертвым правилам.