🏓 デザインモード#1:一輪、ストライプ🏓
23039 ワード
😽 リファレンス😽
headfirst designPatternを参考に勉強しました.
以下のブログと記事を参照してください.
gmlwjd9405.github.io
OmarElGabry/DesignPatterns
quanke/design-pattern-java-source-code
yaboong.github.io
😼 ソースコード😼
https://github.com/bo-yoon/DesignPattern
😼 せっけいげんり😺
▼▼▼長所▼▼
▼一回り▼▼
モード
共有の欠点は、スレッドが安全ではないことです.
つまり、仕事の過程で手を出すことができます.
ウィキペディアソース
解決策
▼▼▼普通単頓▼▼▼▼▼▼
package singleton;
public class Refrigerator {
// 냉장고는 공통 자원
private static Refrigerator ref = null;
private Refrigerator() {} // 생성자가 private
public static Refrigerator getInstance() {
if(ref == null) {
ref = new Refrigerator();
}
return ref;
}
public void display() {
System.out.println("냉장고 공유");
}
}
▼▼▼▼▼
package singleton;
public class EagerRefrigerator {
// 냉장고는 공통 자원
private static EagerRefrigerator ref = new EagerRefrigerator();
private EagerRefrigerator() {} // 생성자가 private
public static EagerRefrigerator getInstance() {
return ref;
}
public void display() {
System.out.println("Eager 냉장고 공유");
}
}
▼▼▼同期▼▼▼
package singleton;
public class SyncRefrigerator {
// 냉장고는 공통 자원
private static SyncRefrigerator ref = null;
private SyncRefrigerator() {} // 생성자가 private
public synchronized static SyncRefrigerator getInstance() {
if(ref == null) {
ref = new SyncRefrigerator();
}
return ref;
}
public void display() {
System.out.println("Sync 냉장고 공유");
}
}
▼戦略モード▼▼▼
画像のソース
欠点:重複コードの生成
package strategy;
public interface Exercise {
public void acting(int hours);
}
package strategy;
public class Climbing implements Exercise {
private String place; // 장소
public Climbing(String place) {
this.place = place;
}
@Override
public void acting(int hours) {
System.out.println(place + "에서 " +hours + "시간 동안 클라이밍함 " );
}
}
package strategy;
public class Swimming implements Exercise {
private String place;
private String things;
public Swimming(String place, String things) {
this.place = place;
this.things = things;
}
@Override
public void acting(int hours) {
System.out.println(hours +"시간 동안 " + place + "에서 " +things +
"을 가지고 수영");
}
}
package strategy;
public class Swimming implements Exercise {
private String place;
private String things;
public Swimming(String place, String things) {
this.place = place;
this.things = things;
}
@Override
public void acting(int hours) {
System.out.println(hours +"시간 동안 " + place + "에서 " +things +
"을 가지고 수영");
}
}
package strategy;
public class Child extends User {
@Override
public void display() {
System.out.println("나는 어린이");
}
}
package strategy;
public class Player extends User{
@Override
public void display() {
System.out.println("나는 수영선수!");
}
}
package strategy;
public class Main {
public static void main(String [] args) {
User user = new Child(); // 학생 사용자 선언
user.display();
user.setExercise(new Swimming("케리비안베이","튜브"));
user.doAct(5);
user.setExercise(new Climbing("실내 체육관"));
user.doAct(2);
}
}
Reference
この問題について(🏓 デザインモード#1:一輪、ストライプ🏓), 我々は、より多くの情報をここで見つけました https://velog.io/@borab/디자인-패턴-1-싱글턴-스트래티지-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol