デザインパターンの七つの原則(1.2)

--- ---復元コンテンツ始まります

設計原理の核となるアイデア

設計原理の目的は、より安定かつ堅牢なソフトウェアを構築することです。そして、このような要件のようなソフトウェア

  • 疎結合
  • スケーラビリティ

1.シングル責任の原則


責任の一つの原則とは何ですか?

Java言語では:クラスが一つの機能のための唯一の責任です。

単一責任の原則の目的

可読性を高めるために、クラスのクラスの複雑さを低減することにより、スケーラビリティ

単一粒子業務(クラスやメソッド)

典型的には、単一のクラスサイズの場合にはデューティの原則に準拠し、コードロジックは十分に単純である場合、デューティの原理上の単一のメソッドを維持することができます。



2.インターフェイスの棲み分け原理


インターフェイスおよびインターフェイスの分離

疎結合ソフトウェアを実現するようにインタフェース仕様の役割の一つは、疎結合型、基づいています。

言い換えれば、インターフェース分離は、単一責任の原則の実現です。

インターフェイス分離原則の目的

インターフェイス分離原則の要件は、インターフェースの細分化と明確なインターフェイス機能です。

洗練されたインターフェースは、直接、システム全体の柔軟性を引き起こすだけでなく、構造的な複雑さをもたらすでしょう。

インタフェース20に分離及びインタフェースを満たすために、例えば、10事前定義されたインタフェース、。その後、クラスはインタフェースの実現に、より柔軟になりますが、インターフェイスは、構造の複雑化につながります。




3.依存関係逆転の原則


具体的に依存しない、抽象的に依存しています。


依存関係の逆転は何ですか?

クラス間のインターフェースに依存してクラス依存性の変化。

[Baiduの百科事典から]

目的

デカップリング、拡張モジュールの再利用。

依存性逆転原理IOCスプリングコンテナ機構は、クラスインターフェースは、クラス間の結合の依存性を減少させる、IOC及びコンテナの依存クラスは、同様に、クラス間の高い結合の問題を解決するエコー考え。


依存性は、次の3つの方法を通過しました

  • インターフェイスの転送
  • 結果として得を渡します
  • セッター転送


//接口传递
interface Car
{
    void drive();
}

interface Person
{
    void lunch(Car car);
}


//构造方法传递

interface Bicycle
{
    void ride();
}

class Tom
{
    private Bicycle bicycle;

    Tom(Bicycle bicycle)
    {
        this.bicycle=bicycle;

    }

}

//setter方法传递

interface Weather
{
    void sun();
}

class Today
{
    private Weather weather;

    public void setWeather(Weather weather) {
        this.weather = weather;
    }
}



4.リヒター置換原則


継承のメリットとデメリット

リー:拡張機能を実装するコードの再利用、より便利に。
短所:クラス間の結合を強化


リヒターの置換原則とは何ですか?

サブクラスでは、親クラスのメソッドをオーバーライドしないようにしてください。

あなたが書き換えなければならなかった場合は、共通の基底クラスの継承を抽出することができます。それはまた、依存性、継承の組み合わせの代替的な実施形態を重合することにより得ることができます。

class A
{
    public void a1(){
        
    }
    public void a2(){
        
    }
    
}

class B extends A
{
    @Override
    public void a1()
    {
        
    }
    
}

//提取基类后

class Base
{
    public void a2
    {
        
    }
}
class A extends Base
{
    public void a1(){

    }
}

class B extends Base
{
    public void a1(){

    }
}



開閉の原則


開閉の原理は何ですか?

拡張のために開きますが、変更のため閉鎖。

素人の面では、時にソフトウェアの機能ではなく、元のコードを修正するよりも、コードを最大化するために、拡張する必要があります。


例えば

abstract class Action
{
    abstract public void action();
}

class Describe
{
    public void describe(Action action)
    {
        action.action();
    }
}

class A extends Action
{
    public void action()
    {
        System.out.println("跑步");
    }
}
class B extends Action
{
    public void action()
    {
        System.out.println("瑜伽");
    }
}
class C extends Action
{
    public void action()
    {
        System.out.println("健身");
    }
}

class X extends Action
{
    public void action()
    {
        System.out.println("xxx");
    }
}



public class Main
{
    public static void main(String[] args)
    {
        Describe describe = new Describe();
        describe.describe(new A());
        describe.describe(new B());
        describe.describe(new C());
        describe.describe(new X());
    }
}

ABCクラスは、独自の振る舞いを持って、アクションメソッドを含む、抽象クラスを定義し、オーバーライドメソッドは、抽象クラスの後に継承されました。これらは、単に必要性がそれに新しい機能のクラスを拡張するXなどの新しいイメージを追加します。実質的に任意の位置を変えず、それが機能を拡張します。


6.ドミトリー原理(少なくとも知識の原理)


ディミトリス原理は何ですか?

オブジェクトが他のオブジェクトの最小の理解に抑える必要があります。


症状

友人とのみ直接通信。

直接の友人は:クラスのローカル変数に表示されるほか、直接の友人です。

言い換えれば:デメテルの法則は、ローカル変数は奇妙なクラスを表示させないことをお勧めし必要です。

目的

クラス間の結合を減らします。(カップリングだけでなく、最小限に排除することができます)


多重化原則の7合成

合成/重合体の代わりに、継承を使用してみてください。

合成/重合:ある種のクラスとの間の接触方式を確立します。継承より低い結合。





参考文献:
[デザインパターンの6つの原則-インタフェース偏析原則(ISP)https://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html]
[依存性逆転原理] HTTPS:/ /baike.baidu.com/item/%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99/6189149?fr=アラジン#2
依存性逆転原理[1 https://www.cnblogs.com/alunchen/p/7110116.htmlのオブジェクト指向原理]
[依存性逆転原理(DIP)とのIocを、DI、コンテナの一部の理解Iocを] HTTPS ://www.cnblogs.com/lichenwei/p/3943960.html
[リヒター]置換原則https://www.sogou.com/link?url=hedJjaC291OfPyaFZYFLI4KQWvqt63NBG8sHIIPQJ6S7Q4PYkUMkig ..

---終わり---コンテンツを復元

設計原理の核となるアイデア#

設計原理の目的は、より安定かつ堅牢なソフトウェアを構築することです。そして、このような要件のようなソフトウェア

  • 疎結合
  • スケーラビリティ

1.シングル責任の原則


責任の一つの原則とは何ですか?

Java言語では:クラスが一つの機能のための唯一の責任です。

単一責任の原則の目的

可読性を高めるために、クラスのクラスの複雑さを低減することにより、スケーラビリティ

単一粒子業務(クラスやメソッド)

典型的には、単一のクラスサイズの場合にはデューティの原則に準拠し、コードロジックは十分に単純である場合、デューティの原理上の単一のメソッドを維持することができます。



2.インターフェイスの棲み分け原理


インターフェイスおよびインターフェイスの分離

疎結合ソフトウェアを実現するようにインタフェース仕様の役割の一つは、疎結合型、基づいています。

言い換えれば、インターフェース分離は、単一責任の原則の実現です。

インターフェイス分離原則の目的

インターフェイス分離原則の要件は、インターフェースの細分化と明確なインターフェイス機能です。

洗練されたインターフェースは、直接、システム全体の柔軟性を引き起こすだけでなく、構造的な複雑さをもたらすでしょう。

インタフェース20に分離及びインタフェースを満たすために、例えば、10事前定義されたインタフェース、。その後、クラスはインタフェースの実現に、より柔軟になりますが、インターフェイスは、構造の複雑化につながります。




3.依存関係逆転の原則


具体的に依存しない、抽象的に依存しています。


依存関係の逆転は何ですか?

クラス間のインターフェースに依存してクラス依存性の変化。

[Baiduの百科事典から]

目的

デカップリング、拡張モジュールの再利用。

依存性逆転原理IOCスプリングコンテナ機構は、クラスインターフェースは、クラス間の結合の依存性を減少させる、IOC及びコンテナの依存クラスは、同様に、クラス間の高い結合の問題を解決するエコー考え。


依存性は、次の3つの方法を通過しました

  • インターフェイスの転送
  • 結果として得を渡します
  • セッター転送


//接口传递
interface Car
{
    void drive();
}

interface Person
{
    void lunch(Car car);
}


//构造方法传递

interface Bicycle
{
    void ride();
}

class Tom
{
    private Bicycle bicycle;

    Tom(Bicycle bicycle)
    {
        this.bicycle=bicycle;

    }

}

//setter方法传递

interface Weather
{
    void sun();
}

class Today
{
    private Weather weather;

    public void setWeather(Weather weather) {
        this.weather = weather;
    }
}



4.リヒター置換原則


継承のメリットとデメリット

リー:拡張機能を実装するコードの再利用、より便利に。
短所:クラス間の結合を強化


リヒターの置換原則とは何ですか?

サブクラスでは、親クラスのメソッドをオーバーライドしないようにしてください。

あなたが書き換えなければならなかった場合は、共通の基底クラスの継承を抽出することができます。それはまた、依存性、継承の組み合わせの代替的な実施形態を重合することにより得ることができます。

class A
{
    public void a1(){
        
    }
    public void a2(){
        
    }
    
}

class B extends A
{
    @Override
    public void a1()
    {
        
    }
    
}

//提取基类后

class Base
{
    public void a2
    {
        
    }
}
class A extends Base
{
    public void a1(){

    }
}

class B extends Base
{
    public void a1(){

    }
}



開閉の原則


開閉の原理は何ですか?

拡張のために開きますが、変更のため閉鎖。

素人の面では、時にソフトウェアの機能ではなく、元のコードを修正するよりも、コードを最大化するために、拡張する必要があります。


例えば

abstract class Action
{
    abstract public void action();
}

class Describe
{
    public void describe(Action action)
    {
        action.action();
    }
}

class A extends Action
{
    public void action()
    {
        System.out.println("跑步");
    }
}
class B extends Action
{
    public void action()
    {
        System.out.println("瑜伽");
    }
}
class C extends Action
{
    public void action()
    {
        System.out.println("健身");
    }
}

class X extends Action
{
    public void action()
    {
        System.out.println("xxx");
    }
}



public class Main
{
    public static void main(String[] args)
    {
        Describe describe = new Describe();
        describe.describe(new A());
        describe.describe(new B());
        describe.describe(new C());
        describe.describe(new X());
    }
}

ABCクラスは、独自の振る舞いを持って、アクションメソッドを含む、抽象クラスを定義し、オーバーライドメソッドは、抽象クラスの後に継承されました。これらは、単に必要性がそれに新しい機能のクラスを拡張するXなどの新しいイメージを追加します。実質的に任意の位置を変えず、それが機能を拡張します。


6.ドミトリー原理(少なくとも知識の原理)


ディミトリス原理は何ですか?

オブジェクトが他のオブジェクトの最小の理解に抑える必要があります。


症状

友人とのみ直接通信。

直接の友人は:クラスのローカル変数に表示されるほか、直接の友人です。

言い換えれば:デメテルの法則は、ローカル変数は奇妙なクラスを表示させないことをお勧めし必要です。

目的

クラス間の結合を減らします。(カップリングだけでなく、最小限に排除することができます)


多重化原則の7合成

合成/重合体の代わりに、継承を使用してみてください。

合成/重合:ある種のクラスとの間の接触方式を確立します。継承より低い結合。





参考文献:
[デザインパターンの6つの原則-インタフェース偏析原則(ISP)https://www.cnblogs.com/muzongyan/archive/2010/08/04/1792528.html]
[依存性逆転原理] HTTPS:/ /baike.baidu.com/item/%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99/6189149?fr=アラジン#2
依存性逆転原理[1 https://www.cnblogs.com/alunchen/p/7110116.htmlのオブジェクト指向原理]
[依存性逆転原理(DIP)とのIocを、DI、コンテナの一部の理解Iocを] HTTPS ://www.cnblogs.com/lichenwei/p/3943960.html
[リヒター]置換原則https://www.sogou.com/link?url=hedJjaC291OfPyaFZYFLI4KQWvqt63NBG8sHIIPQJ6S7Q4PYkUMkig ..

おすすめ

転載: www.cnblogs.com/noneplus/p/11323761.html