JAVA常用设计模式(一、单例模式、工厂模式)
生活随笔
收集整理的這篇文章主要介紹了
JAVA常用设计模式(一、单例模式、工厂模式)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JAVA設(shè)計(jì)模式之單例模式
?
import java.util.HashMap; import java.util.Map;/*** 設(shè)計(jì)模式之單例模式* 單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。* 這種模式涉及到一個(gè)單一的類,該類負(fù)責(zé)創(chuàng)建自己的對(duì)象,同時(shí)確保只有單個(gè)對(duì)象被創(chuàng)建。這個(gè)類提供了一種訪問(wèn)其唯一的對(duì)象的方式,可以直接訪問(wèn),* 不需要實(shí)例化該類的對(duì)象。* * 1.單例模式只能有一個(gè)實(shí)例* 2.單例必須自己創(chuàng)建自己的唯一實(shí)例* 3.單例必須給其他所有對(duì)象提供這一實(shí)例* * 主要解決:一個(gè)全局使用的類頻繁地創(chuàng)建與銷毀。* * 何時(shí)使用:當(dāng)您想控制實(shí)例數(shù)目,節(jié)省系統(tǒng)資源的時(shí)候。* * @author dyq**/ public class DesignPatternSingleton {public static void main(String[] args) {SlackerSingletonObject slackerSingletonObject = SlackerSingletonObject.getInstance();HungrySingletonObject hungrySingletonObject = HungrySingletonObject.getInstance();EnumSingletonObject enumSingletonObject = EnumSingletonObject.INSTANCE;} } /*** 懶漢模式-單例模式* @author dyq**/ class SlackerSingletonObject{private static SlackerSingletonObject instance;private SlackerSingletonObject() {System.out.println("加載SlackerSingletonObject");}public static synchronized SlackerSingletonObject getInstance() {if(instance==null) {instance = new SlackerSingletonObject();}return instance;}public static Map<String,Object> getProFile(){Map<String,Object> map = new HashMap<String,Object>();map.put("jdbcDriver", "oracle");return map;} } /*** 餓漢模式-單例模式*/ class HungrySingletonObject{private static HungrySingletonObject instance = new HungrySingletonObject();private String name ;private HungrySingletonObject() {System.out.println("加載HungrySingletonObject");}public static HungrySingletonObject getInstance() {return instance;}public static Map<String,Object> getProFile(){Map<String,Object> map = new HashMap<String,Object>();map.put("jdbcDriver", "oracle");return map;} }/*** 枚舉--單例模式*/ enum EnumSingletonObject{INSTANCE;public static Map<String,Object> getProFile(){Map<String,Object> map = new HashMap<String,Object>();map.put("jdbcDriver", "oracle");return map;} }JAVA設(shè)計(jì)模式之工廠模式
?
/*** 設(shè)計(jì)模式之工廠模式* 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。* 在工廠模式中,我們?cè)趧?chuàng)建對(duì)象時(shí)不會(huì)對(duì)客戶端暴露創(chuàng)建邏輯,并且是通過(guò)使用一個(gè)共同的接口來(lái)指向新創(chuàng)建的對(duì)象。* * 主要解決:主要解決接口選擇的問(wèn)題。* 何時(shí)使用:我們明確地計(jì)劃不同條件下創(chuàng)建不同實(shí)例時(shí)。* 如何解決:讓其子類實(shí)現(xiàn)工廠接口,返回的也是一個(gè)抽象的產(chǎn)品。* 關(guān)鍵代碼:創(chuàng)建過(guò)程在其子類執(zhí)行。* @author dyq**/ public class DesignPatternFactory {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();//獲取 Circle 的對(duì)象,并調(diào)用它的 draw 方法Shape shape1 = shapeFactory.getShape("CIRCLE");//調(diào)用 Circle 的 draw 方法 shape1.draw();//獲取 Rectangle 的對(duì)象,并調(diào)用它的 draw 方法Shape shape2 = shapeFactory.getShape("RECTANGLE");//調(diào)用 Rectangle 的 draw 方法 shape2.draw();//獲取 Square 的對(duì)象,并調(diào)用它的 draw 方法Shape shape3 = shapeFactory.getShape("SQUARE");//調(diào)用 Square 的 draw 方法 shape3.draw();} }interface Shape{public void draw(); }class Rectangle implements Shape{@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");}} class Circle implements Shape{@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");} } class Square implements Shape {@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");} } class ShapeFactory {public Shape getShape(String shapeType) {if(shapeType==null) {return null;}if(shapeType.equalsIgnoreCase("CIRCLE")) {return new Circle();}else if(shapeType.equalsIgnoreCase("RECTANGLE")) {return new Rectangle();}else {return new Square();}} }?
轉(zhuǎn)載于:https://www.cnblogs.com/XiOrang/p/9355602.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的JAVA常用设计模式(一、单例模式、工厂模式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 洛谷 2820 局域网
- 下一篇: asp.net ajax控件工具集 Au