![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
wang232024
这个作者很懒,什么都没留下…
展开
-
单例模式(Singleton Pattern)
单例模式算是最简单的设计模式了,主要是为了保证一个类有且仅有一个实例。 单例模式有很多实现方式,基本上都是通过getInstance()方法获取唯一的实例对象,判断该对象是否存在,如果不存在就新创建,如果存在就返回该对象。 需要注意的是构造函数必须是私有的,只通过getInstance()方法获取实例对象。 单例模式有饿汉和懒汉的实现方式: 1.饿汉:不管不顾,一开始就创建对象,有一种饥不择原创 2017-09-27 09:47:39 · 208 阅读 · 0 评论 -
设计模式
传说中的设计模式共有23种。 也许一开始并没有主动去看这些设计模式,但是在编程的时候会自觉不自觉地使用到,比如说单例模式,观察者模式等。 准备总结一下遇到的设计模式,因为设计模式很多,所以只总结整理碰到的,没有碰到的先放在一边,后面再说。先把框架整理一下:创建型模式(5种): 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针原创 2017-09-25 11:09:53 · 316 阅读 · 0 评论 -
工厂模式相关
场景:针对设置字体大小,字体颜色,背景,字体等属性。简单工厂(静态方法):工厂提供setStyle()方法可以设置字体大小为20sp,字体颜色红色,背景为111.jpg。这种方式简单直接,只需要一个接口,3个产品类,一个简单工厂类即可实现。 现在有一个问题:此时如果需要设置字体为黑体,简单工厂的setStyle()方法是没有设置字体功能的。这时就需要修改简单工厂的类,没有可扩展性。此时用工厂方法模原创 2017-09-28 17:24:57 · 201 阅读 · 0 评论 -
适配器模式
场景:蝴蝶效应 1.只有风暴类有一个destory的普通方法,通过适配器类适配(蝴蝶类+风暴类),(蚂蚁类+风暴类),蝴蝶可以destory a town,而蚂蚁不可以。 即适配类适配两个类,让源类(蝴蝶)可以实现目标(接口)的方法。2.有一个IDestory接口,其中就有destory()方法,此时,只需要分别适配蝴蝶类和蚂蚁类,蝴蝶可以destory a town,而蚂蚁不可以。 即适配类原创 2017-09-29 15:14:40 · 238 阅读 · 0 评论 -
观察者模式
两个场景:1.赌徒观看赌场赌博的结果:即多个赌徒(gambler)观察一个赌场(casino)。2.按键监听:即一个demo类观察多个按键。https://github.com/wang232024/designpattern.git原创 2017-09-30 10:04:39 · 207 阅读 · 0 评论 -
单例类作为成员变量在父类中被子类继承的问题
在项目中被这个细节坑到,简化后的代码地址: git@github.com:wang232024/SingletonMemeberInSuper.git现象:一个子类A可以访问到同一个父类的另一个子类B中的私有变量,没有通过反射机制。导致的原因:B初始化后,单例类的监听设置改变,导致A的监听设置被改变。这样A在触发监听回调后,回调到的就是B中的私有变量,而不是原有变量。原创 2017-12-28 11:28:00 · 1478 阅读 · 0 评论