Red > Green > Refactor > Red

cycle is based on desire

Java

Java の interface method に public や abstract を宣言してもよいか

interface MyInterface { public abstract void myMethod(); // public と abstract の宣言 } Oracle の Docs より 「してもよいが、冗長なので奨められない」 意訳(一部) interface のメソッドは暗黙のうちに public である interface のメソッドは暗黙のう…

Dependency Injection

「DI パターン」と これを利用した「DI コンテナ」ってのがある 「DI コンテナ」使いたいけど「DI パターン」って何?状態 > 荒いけどまとめる ここにあることが全部ではないので、正確なことは最下記リンクへ DI パターンとは何か 「インスタンス変数にオブ…

配列よりもリストを

コンパイル時に警告を拾うこと (データ構造は C like でなく Java としてあれ) 配列型 コンパイル時に un-typesafe 実行時に typesafe リスト型 コンパイル時に typesafe 実行時に un-typesafe package jp.ymatsukawa; import java.util.ArrayList; import j…

非境界ワイルドカード型 (unbounded wildcard type)

outline ジェネリックスの型パラメータを汎用化する ジェネリックスの型を使用したいが、実際の型パラメータが 何であるかわからない 何であるか気にしない この時、型パラメーターに ? を用いる ex jp.ymatsukawa | + -- ubwildtype | | | + -- MyUtil.java…

骨格実装 (Skeletal Implementation)

骨格実装 (Skeletal Implementation) とは何か 抽象クラスのうち、interface を implements し、このメソッド内容を定義したもの 目的は何か 骨格実装継承クラスの interface メソッド実装定義を手助けすること 骨格実装の構築方法, 利用方法 骨格実装 提供…

static field initiate optimize

src | + -- jp.ymatsukawa | + -- constructor | | | + -- InstanceAble.java + -- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.InstantiateAble; import java.util.Calendar; public class Main { public …

Java constructor

src | + -- jp.ymatsukawa | + -- constructor | | | + -- Super.java | + -- Sub.java + -- Main.java サブクラスをインスタンス化 > 親クラスのコンストラクタが呼ばれる Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.Sub; public …

Builder Pattern (Java)

Effective Java より 数多くのコンストラクタパラメータに直面した時の対処法 src | +-- jp.ymatsukawa | +-- builder | | | +---- SignupUser.java | +-- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.builder.SignupUs…

static factory method (Java)

jlordiales.me stackoverflow.com 2 記事の書留め コンストラクタの検討と同様、static factory method を検討しよう コンストラクタと対照的に、名前を持てる(また、シグニチャを気にしなくて良い) 不要なインスタンス生成を避けられる 初回のメソッド実行…

Proxy パターン

良いパターンなのに良い例が思い浮かばない

動的クラス読み込み Java

Quoted from Oracle tutorial ClassLoader Applications written in statically compiled programming languages, such as C and C++, are compiled into native, machine-specific instructions and saved as an executable file. The process of combining…

Singleton pattern

(Java の深み) インスタンス生成は一回だけ src | +-- jp.ymatsukawa +-- Main.java | +-- single | + -- Single.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.single.Single; public class Main { public static void main(S…

委譲されるクラスは委譲したクラスが隠蔽する

(一番進捗が出ているタスク, 一番進捗が出ていないタスク void → int) 設計 顧客 | マネージャー、エンジニア1、 エンジニア2 が居るとする 顧客は知りたい エンジニア1、エンジニア2 が進めるタスクの内 一番進捗が出ているタスク 一番進捗が出ていないタス…

状態を表現管理する State パターン

(有限オートマトン) Singleton は未考慮 ↓ classify src | +-- jp.ymatsukawa +-- Main.java | +-- state | + -- Worker.java + -- WeekdayState.java + -- MorningState.java + -- AfternoonState.java + -- EveningState.java + -- NightState.java jp.yma…

servlet context definition

ServletContext is a configuration Object which is created when web application is started. It contains different initialization parameter that can be configured in web.xml. Difference from ServletConfig ServletConfig is one per servlet whi…

servlet container definition

The basic idea of Servlet container is using Java to dynamically generate the web page on the server side. So servlet container is essentially a part of a web server that interacts with the servlets. quoted from Servlet Container

Servlet definition

A servlet is simply a class which responds to a particular type of network request - most commonly an HTTP request. reference from stackoverflow.com

Strategy Pattern 処理の切替

拠点報告( hubReport.showReport ) を 「東京拠点 → 大阪拠点」と順に出力する 内部処理 処理ロジックを 東京拠点の報告処理 → 大阪拠点の報告処理 としてみる src | +-- jp.ymatsukawa +-- Main.java | +-- report | + -- HubReportStrategy.java (interfac…

インスタンス生成の分岐: Factory method と interface

stuff → staff 素晴らしい 今後この手法を参考にする クライアント側がプロダクション内部のことを気にしなくて良い プロダクション側が固定値でインスタンス生成の分岐可能 引数違いのコンストラクタ生成も可能 src | +-- jp.ymatsukawa +-- Main.java | +-…

インスタンス生成の分岐: Factory method の細工

stuff → staff 続き: インスタンス生成の分岐: factory method パターン - Red > Green > Refactor > Red ダメ 私に響かない クライアント側で冗長な情報が必要 パッケージ名、サブクラス名は公開せねばならぬし (jdbc の悪夢) プロダクション側でインスタン…

インスタンス生成の分岐: factory method パターン

stuff → staff 元: インスタンス生成の分岐(Java) - Red > Green > Refactor > Red 自分に一番響く設計を手当たり次第 デザインパターンの Factory method より (記事中では Factory > Creator) src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | + -- C…

インスタンス生成の分岐(Java)

stuff → staff 思い出し用に書き残し Stfuff のコンストラクタは最適化できるか? まず設計の目的から src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | | | + -- Stuff.java +-- stuffType | + -- StuffType.java + -- Manager.java + -- Engineer.java…

JUnit 4 > org.junit.rules.ExpectedException のアクセス修飾子は public

表題通りそのままです OK @Rule public final ExpectedException exception = ExpectedException.none(); NG @Rule protected final ExpectedException exception = ExpectedException.none(); @Rule private final ExpectedException exception = ExpectedE…

IntelliJ にて Maven プロジェクトを作成し JUnit を dependency する場合の雛形 pom.xml

pom.xml でうまくいかんかったんで source value 1.5 is obsolete 問題(?) なんてのがあるらしく build > plugins > plugin > configuration の source, target を 明示的に利用 JDK の ver (${java.version} ではなく固定値) にしないと 「JDK 1.5 使ってま…

unmodifiable な Map を作成する

こういうの欲しかったので...書き残し 記事 java.util.Collections.unmodifiableMap() Method Examplewww.tutorialspoint.com 引用ソースコードと実行結果 import java.util.*; public class CollectionsDemo { public static void main(String[] s) { //obj…

内部クラス(public) に在るインスタンスメソッドを使う方法

$SOME_DIR/src/Main.java 1 import myutil.ExternalClass; 2 3 public class Main { 4 public static void main(String... args) { 5 ExternalClass externalClass = new ExternalClass(); 6 ExternalClass.SubClass subClass = externalClass.new SubClass(…

for-each の骨組み作っただけで Required Found のコンパイルエラー出た時

ループ変数、ループされる変数 のクラスに食い違いがないか確かめる ———————— 自戒用に書き残し import java.util.List; import org.apache.commons.beanutils.DynaBean; public class Test { public void testMethod(List<DynaBean> resource) { for(List<DynaBean> list : reso</dynabean></dynabean>…

catch 句での Throwable と Exception 違い

Throwable は JVM レベルでの Serious Error を catch する時に使う Exception より高階層な API Exception はアプリケーションレベルでの例外を catch する時に使う Throwable より低階層な API app 構築に当たるならこちらを使うべき Throwable Throwable …

try and re-throw best practice

quoted literal and source code from: IBM Best Practice: Catching and re-throwing Java Exceptions - United States re-throw is ok notice the way to re-throw Correct The correct way to catch and re-throw an exception is to pass the caught exc…

build.sbt の libraryDependencies には何を追加すればよいか

何をどのように追加すればよいか分からなかったので Maven Repository: Search/Browse/Explore に遷移 ヘッダー(?) の検索フォームにライブラリ名を入れる(ここでは postgresql とする) 結果一覧が表示されるので適当なライブラリを選択する(PostgreSQL JDBC…

JDBC Statement と PreparedStatement 使い分け

Statement 単純な実行計画を行いたい時(select * from ... を 1 回だけ など) PreparedStatement 複数回に渡る実行計画を行いたい時, ? のパラメーター解析を使いたい時(2 番目記事参照) JDBC - Statements, PreparedStatement and CallableStatementwww.tut…

static method (class method) と instance method の使い分け

Java に関わった話ではないと思い One rule-of-thumb: ask yourself "does it make sense to call this method, even if no Obj has been constructed yet?" If so, it should definitely be static. Java: when to use static methodsstackoverflow.com

static import は控えよ

参考記事 1. に直面したので、書き残し You have an outright naming conflict between java.awt.Event and com.mycompany.calendar.Event, and so you can't even compile. Why is using a wild card with a Java import statement bad?stackoverflow.com

PostgreSQL と Play Framwork を JDBC で連携接続する

環境 MacOSX 10.10.4 JDK 1.8.0_45 Play Framwork 2.4.2(Damiya) 前提 PlayFramework 初期状態から画面構築 に基づいて app 構築している PostgreSQL 構築 (brew だと、createuser 上手くいかんかったんでこっちで... brew はまた別途...) Postgres.app 公式…

sqlite-jdbc を使って Java から sqlite を操作する

ほとんど公式の Usage 通りです... 環境 MacOSX(Yosemite) 10.10.4 Java 1.8.0_45 sqlite3 3.8.5 sqlite DB を準備する $ mkdir ~/Develop $ touch ~/Develop/development.sqlite3 sqlite-jdbc を準備する ダウンロードページから適当な jar を取ってくる(最…

Play framework(Java) で initialize, routing, view 作成, controller 作成して画面表示まで

大前提 MacOSX(Yosemite) 10.10.4 Java 1.8.0_45 Play Framework 2.4.2 "Damiya" activator-1.3.5-minimal 公式サイトの [Download "Damiya"]を直接押下 initialize $ cd activator-1.3.5-minimal/ $ ./activator new Browse the list of templates: http://…

String と StringBuilder の使い分け

メモリ利用量 パフォーマンス が気になる時に切り分け 延々mallocとかもう... http://stackoverflow.com/a/4645155

ボタンイベントで TextField の値を取得する JavaFX

やりたいこと TextField が 2 つある Button が 1 つある Button を押下すると TextField に入力された値が標準出力される TextField に値を入力しない > ボタン押下 > NullPointerException気にしない 環境 Java 1.8.0_45-b14 JavaFX 2.0 NetBeans 8.0.2 パ…

JavaFX architect

JavaFXとMVC - ソフトウェアエンジニアリング - Torutkwww.torutk.com

Mac へ Tomcat のインストール

Java - TomcatをMacにインストール - Qiitaqiita.com (brew もいいですが、source から構築する方法が個人的にはしっくりきます) 公式 > Download から Tomcat の tar.gz を手に入れる 必要なリリースバージョンのリンクへ遷移 (Tomcat 8.0, Tomcat 7.0 など…

JavaFX tutorials etc

tutorial Getting Started with JavaFX: About This Tutorial | JavaFX 2 Tutorials and Documentationdocs.oracle.com best practice Implementing JavaFX Best Practices | JavaFX 2 Tutorials and Documentationdocs.oracle.com deploy as web app? JavaF…

interface を使う理由 Java

interface を使う理由 モジュール(クラス/メソッド)を疎結合にする (多態性の実現にも利用されるらしいが、情報未精査) 実例 標準入力した文字列を replace して trim する interface 利用前 package src | +- Main.java +- util | +- MyIO.java Main.java p…

interfaces Java

オブジェクトの 振る舞い → interactionhttps://youtube.com/watch?v=AU07jJc_qMQ(ブランク埋込)

Interface#implements ; Java

インターフェイスを実装する時は implements を利用する interface ISample { int sampMethod(); } class ClSamp implements ISample { ... @Override public int sampMethod() { return 774; } } やらなきゃ忘れる

参照型を脳内変換 ; Java

メモ書き int[] data = { 1, 2, 3, 4 }; この構文をどうにか思い出そう、と思って 下で脳内変換してたら、フィットした int* data = { 1, 2, 3, 4 }; C 流で