問題タブ [abstraction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 数値が .dup をサポートしないのはなぜですか?
整数を新しい変数に代入するたびにRubyがコピーを作成することは理解していますが、なぜNumeric#dup
エラーが発生するのですか?
すべてのオブジェクトが適切に応答する必要があるため、これは抽象化を壊しません.dup
か?
dup
私が知る限り、メソッドを書き直すと問題が解決します。
これには、私が見ていない欠点がありますか? これがRubyに組み込まれていないのはなぜですか?
java - Java の 2 つのメソッドからコードを抽象化します。おそらくデリゲートを使用しますか?
タイプが異なるだけで、本質的に同じことを行う 2 つのメソッドがあります。この機能をいくつかの汎用メソッドに抽象化したいのですが、デリゲートを使用して C# で簡単に実行できると思いますが、Java で同等のものを知りません。makeWhateverRequest
ここでは 2 つのメソッドのみを示していますが、スタイルの異なるメソッドがいくつか (8 つほど) あります。ここに私の方法があります:
User
(各メソッドの最初の行のように) aと aを取るデリゲートのようなものがあれば、String
その行はジェネリック メソッドに抽象化できます。ただし、最初の行は異なる値 (つまり、 または のいずれかのインスタンス) を返し、Get
このPut
値は 2 行目で使用されることに注意してください。各メソッドの最後の行はすでに同じで、ポリモーフィズムを使用してどのバージョンのgetResponseType
を呼び出すかを判断しているので、問題ありません。
1 つの問題は、別のメソッドを呼び出す必要がある各メソッドの 2 行目にあります。Get
おそらく、実装と実装の両方を行ういくつかのインターフェイスを用意しPut
、そのインターフェイスのインスタンスを取るデリゲートのようなものを必要とすることができます。次に、GetResponse
との両方PutResponse
が別のインターフェイスを実装する可能性があり、getResponseType
そのインターフェイスのインスタンスを取る があることを確認できます。
Get
Put
共通の基本クラスから継承しますRequest
。 共通の基本クラスから継承しGetResponse
ます。おそらく、これらの基本クラスを抽象化して、異なるインターフェイスを持つ代わりに、必要な抽象基本クラスのインスタンスを取るメソッドを持つことができます。PutResponse
Response
私は Java にあまり詳しくないので、C# で行うのと同等の方法を知りません。助けてくれてありがとう。
編集: どのインターフェースが必要になるかについての私の考えは次のとおりです。
次に、これらのメソッドが必要になります。
java - Java 1.6 抽象ランダム アクセス
Java の第一人者として、ランダム アクセスを抽象化して、コードがアクセスしているデータがメモリ内にあるか、ハード ドライブ上のファイルにあるかにとらわれないようにするにはどうすればよいでしょうか?
(問題のファイルのサイズは数ギガバイトになる可能性があります。ランダム アクセスが最も重要な機能です。)
asp.net - ASP.Netページの抽象化
WebブラウザにWebフォームを表示するwinアプリケーションがあります。このWebフォームからデータを取得するために、非表示のテキストボックスを使用し、WebブラウザコントロールのHtmlDocumentオブジェクトを使用してそのテキストを取得しています。他のフォームがこの抽象化を使用できるように、このテキストボックス要素を持つこのWebフォームの抽象化を作成したいと思います。Webコントロールを作成し、その上にテキストボックスを配置しました。このコントロールを自分のページに配置すると、テキストボックスが表示されると思いました。アプリケーションを実行すると、テキストボックスがレンダリングされているのに、コントロール名が付いていることに気付きました。その名前(WebControl $ TextBoxName)とそのid(WebControl_TextBoxName)で、winアプリは、そのid(TextBoxName)で要素を見つけることができなかったため、例外をスローします。だからここに私の質問があります:いくつかの要素を含む抽象的なWebフォーム/Webコントロールを作成し、それを使用して最終的なフォームにこれらの要素を含めるにはどうすればよいですか?(名前とIDは変更しないでください)ご協力いただきありがとうございます
python - Pythonからvmdkファイルを表示しますか?
Pythonからvmdkファイルの内容を表示し、そこからファイルを読み取れるようにする方法はありますか?(私はそれに書く必要はありません)。そうでない場合は、vmdkファイルをホストマシンにマウントする方法はありますか、または一般的に、VMに接続して実行せずにvmdkファイルを確認する他の方法はありますか?
oop - 一文は何で構成されていますか?名前を付ける方法は?
私はテキストパーサーのアーキテクチャを設計しています。例文:Content here, content here.
全文は...文です、それは明らかです。The
、quick
などは言葉です。,
と .
は句読点です。しかし、一般的に単語と句読点はすべて一緒に何ですか?それらは単なるシンボルですか?単一の文が何で構成されているかを最も合理的な抽象的な方法で命名する方法がわかりません(文字/母音などで構成されていると書くことができるため)。
助けてくれてありがとう:)
design-patterns - これは IOC の典型的な使用例ですか?
私の現在のアプリケーションでは、ユーザーは一連の管理画面を通じてカスタム Web フォームを定義できます。これは本質的に EAV タイプのアプリケーションです。そのため、特定のページをレンダリングするために HTML または ASP.NET マークアップをハード コードすることはできません。代わりに、UI はサービス レイヤーから Form オブジェクトのインスタンスを要求し、サービス レイヤーは複数の RDMBS テーブルを使用してフォーム オブジェクトを構築します。フォームには、そのようなコンテキストで表示されると予想される種類のクラスが含まれています: Form
=> IEnumerable<FormSections>
=>IEnumerable<FormFields>
サービス層は次のようになります。
すべてが見事に機能します(しばらくの間)。UI は、特定のフォームにどのセクション/フィールドが存在するかについて賢明ではありません。受信した Form オブジェクトを、機能する ASP.NET ページに喜んでレンダリングします。
数週間後、私はビジネスから新しい要件を受け取りました。フォームの編集不可 (読み取り専用) バージョンを表示する場合、特定のフィールド値を一緒にマージし、その他の人為的/計算されたフィールドを追加する必要があります。私が言う問題はありません。メソッドがより明示的になるようにサービス クラスを修正するだけです。
再びすべてがうまく機能し、力のバランスが回復しました。UI は引き続きフォームの内容にとらわれず、関心の分離が達成されます。しかし、ほんの数週間後、ビジネスは新しい要件を提示しました。特定のシナリオでは、上記で参照したフォーム変換の一部のみを適用する必要があります。
この時点で、メソッド (OpenFormViewingScenario1、OpenFormViewingScenario2 など) を急増させたくない限り、「明示的なメソッド」アプローチは行き止まりに達したように感じます。代わりに、別のレベルの間接化を導入します。
表面的には、これは許容できるアプローチのように見えますが、特定の臭いがあります。つまり、OpenFormForViewing の実装の詳細について無知な至福の中で生きてきた UI は、IFormViewCreator の知識を持ち、インスタンスを作成する必要があります。
- 私の質問は 2 つあります。求めているコンポーザビリティを達成するためのより良い方法はありますか? (おそらく、IoC コンテナーまたはホーム ロール ファクトリを使用して、具体的な IFormViewCreator を作成します)?
- ここで抽象化を根本的に台無しにしましたか?
javascript - CommonJSの「約束」抽象化の利点は何ですか?
私はこの記事を読んでいますが、promise の抽象化に関するセクションは少し複雑すぎるように思えます。以下に例を示します。
以下は、より少ないコード行で同じ結果を提供できるように思えます。
iphone - NSManagedObjectとNSDictionaryの抽象化
私のプロジェクトには、サーバーから表示するオブジェクトがいくつかあります。それらをFooと呼びましょう。Fooフィードを取得したら、それらをRemoteFooというNSMutableDictionaryサブクラスに解析し、これらのRemoteFooオブジェクトをアプリ全体に渡してデータを表示します。
ユーザーがRemoteFooをダウンロードしたい場合は、FooというコアデータNSManagedObjectエンティティを作成し、RemoteFooの値を使用してインスタンス化します。これはすべて機能します。
私が抱えている問題は、RemoteFooとFooでメソッドを実行する場合、RemoteFoo.mとFoo.mの両方でそれを複製する必要があるということです。また、重複したinitでいっぱいの場合、私のアプリは次のようになります。
ユーザーがローカルに保存したFooを表すコアデータFooエンティティから一時的なリモートRemoteFooを分離しながら、このコードの重複をすべて回避するにはどうすればよいですか?