デザインパターン

デザインパターン
5問 • 2年前
  • 谷峻輔
  • 通報

    問題一覧

  • 1

    低凝集 ていぎょうしゅう とはなにか?

    関連するデータやロジック同士が分散している状態のこと 単にデータを保持するだけの、なんら処理ロジックを持たない データクラス は低凝集です データクラスとコントローラークラスが分離しているような状態がそうらしい https://qiita.com/MinoDriven/items/5e69d9bd028aa350e2c4

  • 2

    ValueObjectとは

    ValueObjectとはデータのラッパーであり、正確には (原則的に)1個のインスタンス変数 インスタンス変数を初期化するコンストラクタ インスタンス変数を正常に操作することを保証したメソッド から構成されるクラスです。 /// <summary>税抜き金額</summary> public class AmountExcludingTax { private int _amount; public AmountExcludingTax(int amount) { // 初期値はコンストラクタで与える _amount = amount; } } // 税抜き金額1000円 var amountExcludingTax = new AmountExcludingTax(1000);

  • 3

    完全コンストラクタとは

    オブジェクトを「 newした時点で正しく利用可能な、即ち完全体 」となるよう適切な初期化ロジックをコンストラクタに実装する方法です。 税抜き金額のあるべき姿、要件を考えてみましょう。 0以上の整数であること となりますね。この要件を満たすもののみインスタンス変数に格納するようフィルタリングすれば良いのです。要件未達の値は例外を投げるよう実装します。 /// <summary>税抜き金額</summary> public class AmountExcludingTax { private int _amount; public AmountExcludingTax(int amount) { // コンストラクタで不正値を除外 if (!IsValid(amount)) { throw new ArgumentOutOfRangeException(); } _amount = amount; } // 税抜き金額のバリデーションを用意 private static bool IsValid(int amount) { // 正常値の要件を記述 return 0 <= amount; } } これで正常値のみインスタンス変数に格納できるようになりました。 どうも値の役割をクラスとして定義し、役割外の値や行動をもたせない。 完全に役割が保証されたクラスを定義するということが思想らしい JavaScriptでそれやるのきつくね?

  • 4

    ValueObect と完全コンストラクタの例

    /// <summary>税抜き金額</summary> public class AmountExcludingTax { private readonly int _amount; public int Value { get { return _amount; } } /// <summary>コンストラクタ</summary> /// <param name="amount">税抜き金額</param> public AmountExcludingTax(int amount) { if (!IsValid(amount)) { throw new ArgumentOutOfRangeException(); } _amount = amount; } /// <summary>税抜き金額を加算する</summary> /// <param name="amountExcludingTax">税抜き金額</param> /// <returns>税抜き金額</returns> public AmountExcludingTax Add(AmountExcludingTax amountExcludingTax) { return new AmountExcludingTax(_amount + amountExcludingTax._amount); } /// <summary>有効な税抜き金額であるかを返す</summary> /// <param name="amount">税抜き金額</param> /// <returns>有効な場合true</returns> private static bool IsValid(int amount) { return 0 <= amount; } }

  • 5

    モジュールの抽象度について説明せよ

    モジュールの抽象度・抽象化 上位モジュールが、下位モジュールの具体的な内容を知らなくても動作するとき、上位モジュールの抽象度は下位モジュールよりも高いという。 またこのとき、下位モジュールの内容は抽象化されているという。また、上位モジュールは下位モジュールよりも抽象的である、ともいう。 逆に、下位モジュールがモジュールの意味以上の知識を上位モジュールに要求する場合、抽象化に失敗しているという 下位モジュールの仕様を意識させない上位モジュールを作ることが重要!

  • その他

    その他

    谷峻輔 · 12問 · 2年前

    その他

    その他

    12問 • 2年前
    谷峻輔

    LWC

    LWC

    谷峻輔 · 100問 · 2年前

    LWC

    LWC

    100問 • 2年前
    谷峻輔

    LWC2

    LWC2

    谷峻輔 · 28問 · 2年前

    LWC2

    LWC2

    28問 • 2年前
    谷峻輔

    Javascript

    Javascript

    谷峻輔 · 100問 · 2年前

    Javascript

    Javascript

    100問 • 2年前
    谷峻輔

    javascript2

    javascript2

    谷峻輔 · 58問 · 2年前

    javascript2

    javascript2

    58問 • 2年前
    谷峻輔

    js1 JavaScript の基礎

    js1 JavaScript の基礎

    谷峻輔 · 92問 · 2年前

    js1 JavaScript の基礎

    js1 JavaScript の基礎

    92問 • 2年前
    谷峻輔

    js2 コード品質、オブジェクト基本、データ型

    js2 コード品質、オブジェクト基本、データ型

    谷峻輔 · 100問 · 2年前

    js2 コード品質、オブジェクト基本、データ型

    js2 コード品質、オブジェクト基本、データ型

    100問 • 2年前
    谷峻輔

    js3 データ型

    js3 データ型

    谷峻輔 · 100問 · 2年前

    js3 データ型

    js3 データ型

    100問 • 2年前
    谷峻輔

    js4 データ型、関数の高度な機能

    js4 データ型、関数の高度な機能

    谷峻輔 · 100問 · 2年前

    js4 データ型、関数の高度な機能

    js4 データ型、関数の高度な機能

    100問 • 2年前
    谷峻輔

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    谷峻輔 · 96問 · 2年前

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    js5 関数の高度な機能 オブジェクトプロパティの設定 プロトタイプ, 継承プロトタイプ, 継承、クラス

    96問 • 2年前
    谷峻輔

    js6 クラス Promise, async/await

    js6 クラス Promise, async/await

    谷峻輔 · 100問 · 2年前

    js6 クラス Promise, async/await

    js6 クラス Promise, async/await

    100問 • 2年前
    谷峻輔

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    谷峻輔 · 96問 · 2年前

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    js7 Promise, async/await、ジェネレータ, 高度なイテレーション、モジュール

    96問 • 2年前
    谷峻輔

    js8 その他

    js8 その他

    谷峻輔 · 57問 · 2年前

    js8 その他

    js8 その他

    57問 • 2年前
    谷峻輔

    Javaとは〜

    Javaとは〜

    谷峻輔 · 83問 · 2年前

    Javaとは〜

    Javaとは〜

    83問 • 2年前
    谷峻輔

    Reactクイックスタート

    Reactクイックスタート

    谷峻輔 · 15問 · 2年前

    Reactクイックスタート

    Reactクイックスタート

    15問 • 2年前
    谷峻輔

    承認申請

    承認申請

    谷峻輔 · 16問 · 2年前

    承認申請

    承認申請

    16問 • 2年前
    谷峻輔

    アプリケーションビルダー2

    アプリケーションビルダー2

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー2

    アプリケーションビルダー2

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー3

    アプリケーションビルダー3

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー3

    アプリケーションビルダー3

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー4

    アプリケーションビルダー4

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー4

    アプリケーションビルダー4

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー5

    アプリケーションビルダー5

    谷峻輔 · 94問 · 2年前

    アプリケーションビルダー5

    アプリケーションビルダー5

    94問 • 2年前
    谷峻輔

    アプリケーションビルダー6

    アプリケーションビルダー6

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー6

    アプリケーションビルダー6

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー7

    アプリケーションビルダー7

    谷峻輔 · 100問 · 2年前

    アプリケーションビルダー7

    アプリケーションビルダー7

    100問 • 2年前
    谷峻輔

    アプリケーションビルダー8

    アプリケーションビルダー8

    谷峻輔 · 98問 · 2年前

    アプリケーションビルダー8

    アプリケーションビルダー8

    98問 • 2年前
    谷峻輔

    アプリケーションビルダー9

    アプリケーションビルダー9

    谷峻輔 · 70問 · 2年前

    アプリケーションビルダー9

    アプリケーションビルダー9

    70問 • 2年前
    谷峻輔

    フロー

    フロー

    谷峻輔 · 42問 · 2年前

    フロー

    フロー

    42問 • 2年前
    谷峻輔

    レポート、ダッシュボード

    レポート、ダッシュボード

    谷峻輔 · 60問 · 2年前

    レポート、ダッシュボード

    レポート、ダッシュボード

    60問 • 2年前
    谷峻輔

    SalesCloud

    SalesCloud

    谷峻輔 · 18問 · 2年前

    SalesCloud

    SalesCloud

    18問 • 2年前
    谷峻輔

    標準機能

    標準機能

    谷峻輔 · 72問 · 2年前

    標準機能

    標準機能

    72問 • 2年前
    谷峻輔

    宣言的開発

    宣言的開発

    谷峻輔 · 8問 · 2年前

    宣言的開発

    宣言的開発

    8問 • 2年前
    谷峻輔

    数式、人力規則

    数式、人力規則

    谷峻輔 · 18問 · 2年前

    数式、人力規則

    数式、人力規則

    18問 • 2年前
    谷峻輔

    アクセスレベル

    アクセスレベル

    谷峻輔 · 63問 · 2年前

    アクセスレベル

    アクセスレベル

    63問 • 2年前
    谷峻輔

    データ型変換

    データ型変換

    谷峻輔 · 22問 · 2年前

    データ型変換

    データ型変換

    22問 • 2年前
    谷峻輔

    オブジェクト、項目

    オブジェクト、項目

    谷峻輔 · 91問 · 2年前

    オブジェクト、項目

    オブジェクト、項目

    91問 • 2年前
    谷峻輔

    アプリ、タブ

    アプリ、タブ

    谷峻輔 · 92問 · 2年前

    アプリ、タブ

    アプリ、タブ

    92問 • 2年前
    谷峻輔

    自動化

    自動化

    谷峻輔 · 17問 · 2年前

    自動化

    自動化

    17問 • 2年前
    谷峻輔

    組織、開発モデル

    組織、開発モデル

    谷峻輔 · 65問 · 2年前

    組織、開発モデル

    組織、開発モデル

    65問 • 2年前
    谷峻輔

    ボタン、アクション

    ボタン、アクション

    谷峻輔 · 69問 · 2年前

    ボタン、アクション

    ボタン、アクション

    69問 • 2年前
    谷峻輔

    インテグレーション

    インテグレーション

    谷峻輔 · 40問 · 2年前

    インテグレーション

    インテグレーション

    40問 • 2年前
    谷峻輔

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    谷峻輔 · 46問 · 2年前

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    46問 • 2年前
    谷峻輔

    標準オブジェクト

    標準オブジェクト

    谷峻輔 · 42問 · 2年前

    標準オブジェクト

    標準オブジェクト

    42問 • 2年前
    谷峻輔

    ServiceCloud

    ServiceCloud

    谷峻輔 · 16問 · 2年前

    ServiceCloud

    ServiceCloud

    16問 • 2年前
    谷峻輔

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    谷峻輔 · 41問 · 2年前

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    41問 • 2年前
    谷峻輔

    データインポート、エクスポート

    データインポート、エクスポート

    谷峻輔 · 3回閲覧 · 12問 · 2年前

    データインポート、エクスポート

    データインポート、エクスポート

    3回閲覧 • 12問 • 2年前
    谷峻輔

    Chatter

    Chatter

    谷峻輔 · 21問 · 2年前

    Chatter

    Chatter

    21問 • 2年前
    谷峻輔

    承認申請

    承認申請

    谷峻輔 · 15問 · 2年前

    承認申請

    承認申請

    15問 • 2年前
    谷峻輔

    フロー

    フロー

    谷峻輔 · 44問 · 2年前

    フロー

    フロー

    44問 • 2年前
    谷峻輔

    レポート、ダッシュボード

    レポート、ダッシュボード

    谷峻輔 · 65問 · 2年前

    レポート、ダッシュボード

    レポート、ダッシュボード

    65問 • 2年前
    谷峻輔

    SalesCloud

    SalesCloud

    谷峻輔 · 18問 · 2年前

    SalesCloud

    SalesCloud

    18問 • 2年前
    谷峻輔

    標準機能

    標準機能

    谷峻輔 · 72問 · 2年前

    標準機能

    標準機能

    72問 • 2年前
    谷峻輔

    宣言的開発

    宣言的開発

    谷峻輔 · 8問 · 2年前

    宣言的開発

    宣言的開発

    8問 • 2年前
    谷峻輔

    アクセスレベル

    アクセスレベル

    谷峻輔 · 52問 · 2年前

    アクセスレベル

    アクセスレベル

    52問 • 2年前
    谷峻輔

    数式、人力規則

    数式、人力規則

    谷峻輔 · 17問 · 2年前

    数式、人力規則

    数式、人力規則

    17問 • 2年前
    谷峻輔

    データ型変換

    データ型変換

    谷峻輔 · 22問 · 2年前

    データ型変換

    データ型変換

    22問 • 2年前
    谷峻輔

    オブジェクト、項目

    オブジェクト、項目

    谷峻輔 · 89問 · 2年前

    オブジェクト、項目

    オブジェクト、項目

    89問 • 2年前
    谷峻輔

    アプリ、タブ

    アプリ、タブ

    谷峻輔 · 100問 · 2年前

    アプリ、タブ

    アプリ、タブ

    100問 • 2年前
    谷峻輔

    自動化

    自動化

    谷峻輔 · 18問 · 2年前

    自動化

    自動化

    18問 • 2年前
    谷峻輔

    組織、開発モデル

    組織、開発モデル

    谷峻輔 · 60問 · 2年前

    組織、開発モデル

    組織、開発モデル

    60問 • 2年前
    谷峻輔

    ボタン、アクション

    ボタン、アクション

    谷峻輔 · 69問 · 2年前

    ボタン、アクション

    ボタン、アクション

    69問 • 2年前
    谷峻輔

    インテグレーション

    インテグレーション

    谷峻輔 · 40問 · 2年前

    インテグレーション

    インテグレーション

    40問 • 2年前
    谷峻輔

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    谷峻輔 · 44問 · 2年前

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    ページレイアウト、リストビュー、レコードタイプ、プロセス

    44問 • 2年前
    谷峻輔

    標準オブジェクト

    標準オブジェクト

    谷峻輔 · 32問 · 2年前

    標準オブジェクト

    標準オブジェクト

    32問 • 2年前
    谷峻輔

    ServiceCloud

    ServiceCloud

    谷峻輔 · 17問 · 2年前

    ServiceCloud

    ServiceCloud

    17問 • 2年前
    谷峻輔

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    谷峻輔 · 18問 · 2年前

    ユーザ、ライセンス、プロファイル、権限セット

    ユーザ、ライセンス、プロファイル、権限セット

    18問 • 2年前
    谷峻輔

    データインポート、エクスポート

    データインポート、エクスポート

    谷峻輔 · 11問 · 2年前

    データインポート、エクスポート

    データインポート、エクスポート

    11問 • 2年前
    谷峻輔

    Chatter

    Chatter

    谷峻輔 · 21問 · 2年前

    Chatter

    Chatter

    21問 • 2年前
    谷峻輔

    一時

    一時

    谷峻輔 · 89問 · 2年前

    一時

    一時

    89問 • 2年前
    谷峻輔

    一時2

    一時2

    谷峻輔 · 29問 · 2年前

    一時2

    一時2

    29問 • 2年前
    谷峻輔

    js9 ドキュメント

    js9 ドキュメント

    谷峻輔 · 80問 · 2年前

    js9 ドキュメント

    js9 ドキュメント

    80問 • 2年前
    谷峻輔

    問題一覧

  • 1

    低凝集 ていぎょうしゅう とはなにか?

    関連するデータやロジック同士が分散している状態のこと 単にデータを保持するだけの、なんら処理ロジックを持たない データクラス は低凝集です データクラスとコントローラークラスが分離しているような状態がそうらしい https://qiita.com/MinoDriven/items/5e69d9bd028aa350e2c4

  • 2

    ValueObjectとは

    ValueObjectとはデータのラッパーであり、正確には (原則的に)1個のインスタンス変数 インスタンス変数を初期化するコンストラクタ インスタンス変数を正常に操作することを保証したメソッド から構成されるクラスです。 /// <summary>税抜き金額</summary> public class AmountExcludingTax { private int _amount; public AmountExcludingTax(int amount) { // 初期値はコンストラクタで与える _amount = amount; } } // 税抜き金額1000円 var amountExcludingTax = new AmountExcludingTax(1000);

  • 3

    完全コンストラクタとは

    オブジェクトを「 newした時点で正しく利用可能な、即ち完全体 」となるよう適切な初期化ロジックをコンストラクタに実装する方法です。 税抜き金額のあるべき姿、要件を考えてみましょう。 0以上の整数であること となりますね。この要件を満たすもののみインスタンス変数に格納するようフィルタリングすれば良いのです。要件未達の値は例外を投げるよう実装します。 /// <summary>税抜き金額</summary> public class AmountExcludingTax { private int _amount; public AmountExcludingTax(int amount) { // コンストラクタで不正値を除外 if (!IsValid(amount)) { throw new ArgumentOutOfRangeException(); } _amount = amount; } // 税抜き金額のバリデーションを用意 private static bool IsValid(int amount) { // 正常値の要件を記述 return 0 <= amount; } } これで正常値のみインスタンス変数に格納できるようになりました。 どうも値の役割をクラスとして定義し、役割外の値や行動をもたせない。 完全に役割が保証されたクラスを定義するということが思想らしい JavaScriptでそれやるのきつくね?

  • 4

    ValueObect と完全コンストラクタの例

    /// <summary>税抜き金額</summary> public class AmountExcludingTax { private readonly int _amount; public int Value { get { return _amount; } } /// <summary>コンストラクタ</summary> /// <param name="amount">税抜き金額</param> public AmountExcludingTax(int amount) { if (!IsValid(amount)) { throw new ArgumentOutOfRangeException(); } _amount = amount; } /// <summary>税抜き金額を加算する</summary> /// <param name="amountExcludingTax">税抜き金額</param> /// <returns>税抜き金額</returns> public AmountExcludingTax Add(AmountExcludingTax amountExcludingTax) { return new AmountExcludingTax(_amount + amountExcludingTax._amount); } /// <summary>有効な税抜き金額であるかを返す</summary> /// <param name="amount">税抜き金額</param> /// <returns>有効な場合true</returns> private static bool IsValid(int amount) { return 0 <= amount; } }

  • 5

    モジュールの抽象度について説明せよ

    モジュールの抽象度・抽象化 上位モジュールが、下位モジュールの具体的な内容を知らなくても動作するとき、上位モジュールの抽象度は下位モジュールよりも高いという。 またこのとき、下位モジュールの内容は抽象化されているという。また、上位モジュールは下位モジュールよりも抽象的である、ともいう。 逆に、下位モジュールがモジュールの意味以上の知識を上位モジュールに要求する場合、抽象化に失敗しているという 下位モジュールの仕様を意識させない上位モジュールを作ることが重要!