1、抽象工厂:http://t.csdnimg.cn/Mphpt
2、订阅和发布模式
样例:我有一个stock类 一个messenger类 我希望stock的price属性变化时 messenger能触发alert方法
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace 发布和订阅模式
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
Stock stock = new Stock();
Messenger messenger = new Messenger();
public MainWindow()
{
InitializeComponent();
stock.priceChanged += messenger.alert; // 事件绑定方法时这样绑定
}
private void myButton_Click(object sender, RoutedEventArgs e)
{
stock.Price = int.Parse(this.myTextBox.Text);
}
}
public class Stock
{
private decimal price;
// 声明事件
public event EventHandler<decimal> priceChanged;
public decimal Price
{
get => price;
set
{
this.price = value;
OnPropertyChanged(price);
}
}
private void OnPropertyChanged(decimal price)
{
priceChanged.Invoke(this, price);
}
}
public class Messenger
{
// 事件要将这个方法串连起来
public void alert(object sender, decimal price)
{
MessageBox.Show((price++).ToString());
}
}
}
Prism中的事件聚合器(EventAggregator)用于发布-订阅,主件之间发送消息: