单例模式 Singleton
使用场景
回收站
计数器
鼠标
特点 Features
Singleton pattern is a design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system.
One object only have one instance.
The abstract factory,builder,and prototype patterns can use Singletons in their implementation.
实现 Implementation
An implementation of the singleton pattern must:
ensure that only one instance of the singleton class ever exists; and
provide global access to that instance.
class Solution { private static Solution instance = null; public static Solution getInstance() { if (instance == null) { instance = new Solution(); } return instance; } private Solution() {} };
工厂模式 Factory Pattern
IOC injection -- Google
停车场设计 Parking Lot
Entities 哪些实体?
-
Vehicle,slot,lot.
-
Vehicle: car,bus,motorcycle.
ID (Primary Key),ParkingSize,moveIn(),moveOut()
-
Slot:
slotID (Primary Key),slotSize(),available(),fitInSpot()
-
Lot:
lotID (Primary Key),List<Slot> slotList,availableNum(),Map<Vehicle,Slot> v2slot,Map<Slot,Vehicle> slot2v,findAvailableSlots(),LookUp()
-
Manager 管理员
-
Parking Ticket
-
parkingTicket
int ID,parkingSlot pSlot,Vehicle myVehicle,Time enterTime,Time leaveTime
-
-
Parking Manager 负责调度(单例)
-
parkingManager
List<parkingTicket> ticketList,generateTicket(),withdrawTicket(),LookUp()
-
Blackjack AI 21点游戏
Entities
GameManager
GameRoom room
GameState state
RunGame()
Reset()
DecideWinner()
GameRoom
Dealer dealer
List<Player> playList
join(Player p)
leave(Player p)
openGameRoom()
Dealer
int ID
String name
Double money
List<BlackJackCard> HandCard
wantCard()
checkBigger17()
deal()
Strategy sDealer
Player
int ID
String name
Double money
List<BlackJackCard> HandCard
wantCard()
showHand()
makeDecision()
Strategy sPlayer
Gamer (Player + Dealer)
int ID
String name
Double money
List<BlackJackCard> HandCard
wantCard()
Deck
CardBox
List<BlackJackCard> cardList
AppendDecks()
Shuffle()
PopCard()
Pack 装了4副牌or so
List<BlackJackCard> cardList
card
int faceValue
enum suit
Boolean isAvailable
BlackJackCard
int realValue,int maxValue(),int minValue()
Elevator 电梯设计
Entities
-
Elevator
-
ElevatorUser
int userID
callUp(Elevator)
callDown(Elevator)
checkElevatorStatus(Elevator)
int targetFloor
openDoor(Elevator)
closeDoor(Elevator)
emergency(Elevator)
-
Manager
List<Elevator> elevatorList
List<Message> messageList
Strategy strategy
-
Message
Enum status(drop/pick)
Elevator elevator
List<Integer> targetFloors
Time enterTime
Operations...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。