初识JAVA--设计模式
2019-09-17 17:07
246 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32886505/article/details/100932213
工厂模式 静态代理
饿汉式
直接定义一个静态变量指向类的引用
初识JAVA--开发设计模式
设计模式
- 23种
单例模式
- 核心结构只包含一个类的一个实例
要点
- 类生成一个对象,需要类自身去创建
- 其他类获取该类的这个对象
组成
- 私有构造器
- 私有静态的类引用
- 公共静态的访问方式
类型
- 懒汉式 第一次被调用时生成对象
- 需要在访问方法中增加判断
- 特点 线程不安全,效率高
- 可以通过增加同步锁和双重检查提高线程安全性
-
类被加载时生成对象
/* * 单例模式-懒汉 * */ public class SingletonPattern01 { // 私有的静态引用 private static SingletonPattern01 singletonPattern01 = null; // 私有构造器 private SingletonPattern01() { // TODO Auto-generated constructor stub } // 公共静态访问方式 public static SingletonPattern01 getSingletonPattern01() { if (singletonPattern01 == null) { singletonPattern01 = new SingletonPattern01(); } return singletonPattern01; } } /* * 单例模式-饿汉 */ public class SingletonPattern02 { // 私有的静态引用 private static SingletonPattern02 singletonPattern01 = new SingletonPattern02(); // 私有构造器 private SingletonPattern02() { // TODO Auto-generated constructor stub } // 公共静态访问方式 public static SingletonPattern02 getSingletonPattern02() { return singletonPattern01; } }
工厂模式
组成
- 抽象产品角色:接口或抽象父类,定义方法
- 具体产品角色:抽象的具体子类实现
- 工厂角色:根据情况创建父类的具体产品角色(具体实例),根据实际情况创建多态的父类,由于父类有重写,可以直接调用对应的子类实现
使用
import java.util.*; /* * 工厂模式-简单工厂模式 * 1.抽象产品角色:定义抽象的父类或接口 * 2.具体产品角色:具体实现的子类 * 3.工厂角色:产生父类,根据实际情况创建多态的父类,由于父类有重写,直接调用对应的子类实现 */ public class FactoryMethodTest { // 测试 public static void main(String[] args) { FatherInterface car = null; System.out.print("请输入想要造的车:"); Scanner input = new Scanner(System.in); String carName = input.next(); car = Factory.creatRun(carName); car.CarType(); } } class Factory { public static FatherInterface creatRun(String carName) { FatherInterface newCar = null; if ("Benz".equals(carName)) { newCar = new Benz(); } if ("Audi".equals(carName)) { newCar = new Audi(); } if ("BMW".equals(carName)) { newCar = new BMW(); } return newCar; } } interface FatherInterface { void CarType(); } class Benz implements FatherInterface { @Override public void CarType() { // TODO Auto-generated method stub System.out.println("奔驰有特征么?"); } } class Audi implements FatherInterface { @Override public void CarType() { // TODO Auto-generated method stub System.out.println("奥迪灯厂"); } } class BMW implements FatherInterface { @Override public void CarType() { // TODO Auto-generated method stub System.out.println("宝马板牙"); } }
静态代理
组成
- 接口:定义方法
- 中间代理:实现接口,在实现过程中引用具体实现
- 具体角色:实现接口,被中间代理调用
相关文章推荐
- 【java基础】——初识java中的设计模式
- Java设计模式之初识
- Java设计模式初识(了解设计模式)
- Java设计模式Proxy之初识
- 初识java设计模式
- Java I/O 技术(四)—— 装饰设计模式及应用 初识
- 初识Java设计模式之单例设计模式
- 初识Java设计模式之Builder
- Java设计模式----初识适配器模式
- java设计模式初识:设计模式简介
- Java中的设计模式——初识设计模式
- 初识Java设计模式适配器模式
- 追MM与Java的23种设计模式[转]
- 从Java类库看设计模式2
- 用Java实现的设计模式系列(2)-Prototype
- java设计模式之State(转)
- 在Java中应用设计模式--Singleton
- 从Java类库看设计模式
- Java的建造设计模式
- 用Java实现的设计模式系列(3)--Builder