JAVA常用设计模式(一、单例模式、工厂模式)
生活随笔
收集整理的這篇文章主要介紹了
JAVA常用设计模式(一、单例模式、工厂模式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JAVA設計模式之單例模式
?
import java.util.HashMap; import java.util.Map;/*** 設計模式之單例模式* 單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。* 這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,* 不需要實例化該類的對象。* * 1.單例模式只能有一個實例* 2.單例必須自己創建自己的唯一實例* 3.單例必須給其他所有對象提供這一實例* * 主要解決:一個全局使用的類頻繁地創建與銷毀。* * 何時使用:當您想控制實例數目,節省系統資源的時候。* * @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設計模式之工廠模式
?
/*** 設計模式之工廠模式* 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。* 在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,并且是通過使用一個共同的接口來指向新創建的對象。* * 主要解決:主要解決接口選擇的問題。* 何時使用:我們明確地計劃不同條件下創建不同實例時。* 如何解決:讓其子類實現工廠接口,返回的也是一個抽象的產品。* 關鍵代碼:創建過程在其子類執行。* @author dyq**/ public class DesignPatternFactory {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();//獲取 Circle 的對象,并調用它的 draw 方法Shape shape1 = shapeFactory.getShape("CIRCLE");//調用 Circle 的 draw 方法 shape1.draw();//獲取 Rectangle 的對象,并調用它的 draw 方法Shape shape2 = shapeFactory.getShape("RECTANGLE");//調用 Rectangle 的 draw 方法 shape2.draw();//獲取 Square 的對象,并調用它的 draw 方法Shape shape3 = shapeFactory.getShape("SQUARE");//調用 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();}} }?
轉載于:https://www.cnblogs.com/XiOrang/p/9355602.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的JAVA常用设计模式(一、单例模式、工厂模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷 2820 局域网
- 下一篇: django-内网项目上线测试部署步骤